问题简述:
get_current_user();
和 exec('whoami');
有什么区别?
问题详述:
- 我在Mac上使用XAMPP本地主机。
- 我正在使用Apache,在htdocs文件夹中的一个文件夹(我们称其为folderxyz)中构建基于PHP的网站。
- 我正在测试PDO::ERRMODE_EXCEPTION,参见此链接
然后我遇到了以下错误:
file_put_contents(PDOErrors.txt): failed to open stream: Permission denied...
所以我进行了一些调查,似乎要解决这个问题,我需要将PDOErrors.txt文件的CHMOD
设置更改为777。
但是,我的问题与此无关。 在这个过程中,我意识到我并不清楚Apache、PHP和MySQL中的用户概念。
get_current_user()
时,会得到计算机账户名firstnamelastname
。exec('whoami')
时,会得到daemon
。firstnamelastname
和daemon
之间的关系是什么?firstnamelastname
还是daemon
?root
帐户的概念?编辑:我更新了这个问题,以反映我不是必须更改CHMOD设置的folderxyz。我必须更改PDOErrors.txt文件的设置。
发问者在此:供参考,我在Linux平台上提出了类似的问题(附带一个直观的解释):https://stackoverflow.com/questions/31389892/why-is-the-output-www-data-in-one-case-and-root-in-another
更新:那个问题被删除了,因为它被认为是这个问题的重复(尽管那是针对Linux平台,而我在执行echo exec('whoami');
后得到的是www-data
而不是daemon
)。
从在Linux论坛上提出这个问题中我学到的:
运行的进程与脚本不同。是的,该进程源自脚本,但它不是同一件事。脚本归 root 所有,但进程被 Apache 接管并作为 www-data 运行。
总体结论:我从这个过程中学到的是,用户应该是 Apache 守护进程(Mac 本地主机)或 www-data(在互联网服务器上运行的 Linux),我应该使用
exec('whoami')
来确定这一点,并且我不应该太关心get_current_user()
(可能应该被命名为get_current_owner()
)。
httpd.conf
文件中的设置,user
和group
设置确实设置为daemon
:http://stackoverflow.com/questions/26063556/php5-not-being-run-as-www-data - thanks_in_advance