问题的简短版本:
有什么区别
get_current_user();
和exec('whoami');
?
问题的长版本:
我收到了这个错误:
file_put_contents( PDOErrors.txt ):无法打开流:权限 否认...
所以我做了一些调查,似乎要解决这个问题,我需要将文件 PDOErrors.txt 的CHMOD
设置更改为777。
但是,我的问题与其他内容有关。在此过程中,我意识到我并不清楚Apache,PHP和MySQL中user
的概念。
get_current_user()
“获取当前PHP脚本所有者的名称” Link exec('whoami')
返回“拥有正在运行的php / httpd进程的用户名” Link get_current_user()
时,我会获得firstnamelastname
,这是我在Mac上的帐户名称。exec('whoami')
时,我会daemon
。因此...
firstnamelastname
和daemon
之间的关系是什么?firstnamelastname
还是daemon
? root
帐户的概念是否在这里因素?编辑:我更新了这个以反映我不得不更改CHMOD设置的 folderxyz 。我必须更改文件 PDOErrors.txt
的设置答案 0 :(得分:10)
get_current_user()
(应该)返回文件的所有者,在这种情况下为firstnamelastname
。然而,已经报道了这个功能在平台之间不一致的问题。因此,我不相信它的输出。 daemon
是Apache正在运行的用户。ls -la
,以查找该文件所属的用户和组。firstnamelastname
(+rw
)。+rx
(执行和读取)daemon
和PHP文件+r
(读取)。在我安装XAMMP时,他们通过将htdocs
中的所有内容设置为公共可读来完成此操作,因此daemon
可以读取它,但不能写入它。htdocs
或www
目录。它充当了传统的unix root用户的角色。以下是有关文件所有者/组和流程所有者的一些信息:
host:~$ ls -l /Applications/XAMPP/xamppfiles/htdocs
drwxr-xr-x 3 root admin 4096 2015-01-01 00:01 .
drwxr-xr-x 3 root admin 4096 2015-01-01 00:01 ..
-rw-r--r-- 1 firstnamelastname admin 189 2015-01-31 20:45 index.php
host:~$ ps aux | grep httpd | head -n1
daemon 45204 0.0 0.1 2510176 10328 ?? S Tue11AM 0:01.38 /Applications/XAMPP/xamppfiles/bin/httpd -k start -E /Applications/XAMPP/xamppfiles/logs/error_log -DSSL -DPHP
如果您想让守护程序用户可以写入文件,您可以创建一个新文件夹,并将其命名为组admin
的所有者(因此您也可以使用它),然后给它{{ 1}}用于用户和组,公共+rwx
:
+rx