问题的简短版本:
get_current_user();和exec('whoami');有什么区别?
问题的长篇版本:
我得到了一个错误:
file_put_contents(PDOErrors.txt):未能打开流:权限被拒绝.
因此,我做了一些调查,似乎为了解决这个问题,我需要将文件PDOErrors.txt的CHMOD设置更改为777。
,但是,我的问题是关于其他问题的,在这个过程中,我意识到我不清楚Apache和MySQL中user的概念。
get_current_user()“获取当前PHP脚本所有者的名称”链接exec('whoami')返回“拥有运行的php/httpd进程的用户名”链接get_current_user()时,我会得到我的firstnamelastname,这是我的Mac上的帐户名。exec('whoami')时,我得到了daemon。所以.
firstnamelastname和daemon之间有什么关系?firstnamelastname还是daemon?root帐户的概念在这里的任何地方都有影响吗?编辑:我对此进行了更新,以反映我必须更改CHMOD设置的不是folderxyz。我必须更改文件PDOErrors.txt的设置
OP这里:为了将来的参考,我在这里为Linux平台提出了一个并行的问题(附带了对正在发生的事情的直观解释):https://stackoverflow.com/questions/31389892/why-is-the-output-www-data-in-one-case-and-root-in-another
更新:这个问题被删除了,因为它被认为是这个问题的重复(尽管这是针对Linux平台的,而不是daemon,我是在做echo exec('whoami');之后得到www-data )。
这是我在Linux论坛上问这个问题时学到的:
正在运行的进程与脚本不同。是的,这个过程是从脚本中产生的,但这不是一回事。脚本由root拥有,但进程由Apache接管,并以www-data的形式运行。
总体结论:我从这个过程中学到的是,用户应该是Apache 守护进程 (Mac localhost)或www-data (Linux on A internet server),我应该使用exec('whoami')来确定这一点,我不应该太在意get_current_user() (可能应该命名为get_current_owner())。
发布于 2015-02-16 19:53:11
get_current_user() (应该)返回文件的所有者,在本例中为firstnamelastname。然而,有报道称,这一功能在平台之间不一致。因此,我不相信它的产出。daemon是Apache正在运行的用户。ls -la,以查找文件所属的用户和组。firstnamelastname (+rw)。+rx文件daemon和+r (read)应该有+r(执行和读取)。在我安装XAMMP时,他们将htdocs中的所有内容设置为公共可读的,这样daemon就可以读取它,但不能写入它。htdocs或www目录。它填补了传统unix根用户的角色。下面是关于文件所有者/组和进程所有者的一些信息:
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的所有者(因此您也可以使用它),并为用户和组提供+rwx,+rx用于公共:
host:~$ cd /Applications/XAMPP/xamppfiles/htdocs
host:htdocs$ mkdir some_dir
host:htdocs$ chmod 775 some_dirhttps://stackoverflow.com/questions/28548743
复制相似问题