【发布时间】:2015-04-17 09:29:57
【问题描述】:
问题的简短版本:
两者有什么区别
get_current_user(); 和 exec('whoami'); ?
问题的长版本:
- 我在 Mac 上的 XAMPP 本地主机上。
- 我正在使用 Apache,构建一个 PHP 基于网站的文件夹(我们称之为 folderxyz) htdocs 文件夹(在某些 Linux+Apache 版本中为 var/www)。
- 我在玩数据库连接, 测试此处描述的 PDO::ERRMODE_EXCEPTION:Link
我得到了这个错误:
file_put_contents(PDOErrors.txt):打开流失败:权限 拒绝...
所以我做了一些调查,似乎要解决这个问题,我需要将文件 PDOErrors.txt 的 CHMOD 设置更改为 777。
但是,我的问题是关于其他的。 在此过程中,我意识到我并不清楚 Apache、PHP 和 MySQL 中的user 的概念。
- PHP 手册说
get_current_user()“获取当前 PHP 脚本的所有者的名称” Link - PHP 手册说
exec('whoami')返回“拥有正在运行的 php/httpd 进程的用户名” Link - 当我使用
get_current_user()时,我会得到firstnamelastname,这是我在 Mac 上的帐户名。 - 当我使用
exec('whoami')时,我得到daemon。
那么...
-
firstnamelastname和daemon是什么关系? - “当前 PHP 脚本的所有者” 和 “拥有正在运行的 php/httpd 进程的用户名”有什么关系?
- 谁需要写入 PDOErrors.txt 的权限?是
firstnamelastname还是daemon? - 谁需要写入 PDOErrors.txt 的权限?是 Apache 还是 PHP(或两者兼有)?
- 类 unix 的
root帐户的概念是否在此处考虑在内?
编辑:我对此进行了更新,以反映我必须更改 CHMOD 设置的不是 folderxyz。我不得不更改文件 PDOErrors.txt
的设置此处的操作:为了将来参考,我在此处针对 Linux 平台提出了一个并行问题(附带对正在发生的事情的直观解释):https://stackoverflow.com/questions/31389892/why-is-the-output-www-data-in-one-case-and-root-in-another
【问题讨论】:
-
我想添加以供将来参考,以下 Stackoverflow 答案解释了为什么 Apache 用户在本地机器上显示为
daemon,而在公共机器上显示为www-data(即,可由互联网上的任何人)。我查看了本地计算机中 Apachehttpd.conf文件中的设置,user和group设置确实设置为daemon: stackoverflow.com/questions/26063556/…
标签: php apache unix xampp chmod