PHP:get_current_user()与exec('whoami')

问题的简短版本:

get_current_user();什么区别 和exec('whoami');

问题的长版本:

  1. 我在Mac上的XAMPP本地主机上。
  2. 我正在使用Apache,在htdocs文件夹(某些Linux + Apache版本的var / www)内的文件夹中build立一个基于PHP的网站(我们称之为folderxyz )。
  3. 我正在玩数据库连接,testing了这里描述的PDO :: ERRMODE_EXCEPTION: 链接

我得到这个错误:

file_put_contents( PDOErrors.txt ):未能打开stream:权限被拒绝…

所以我做了一些调查,似乎要解决这个问题,我需要更改文件PDOErrors.txtCHMOD设置为777。

但是,我的问题是关于别的。 在这个过程中,我意识到我不清楚Apache,PHP和MySQL中user的概念。

  • PHP手册说get_current_user() “获取当前PHP脚本的所有者的名字” 链接
  • PHP手册说exec('whoami')返回“拥有正在运行的php / httpd进程的用户名” 链接
  • 当我使用get_current_user() ,我得到我的firstnamelastname ,这是我的Mac上的我的帐户名称。
  • 当我使用exec('whoami') ,我得到daemon

所以…

  1. firstnamelastnamedaemon之间有什么关系?
  2. “当前PHP脚本的所有者”“拥有正在运行的php / httpd进程的用户名 之间有什么关系?
  3. 谁需要写入PDOErrors.txt的权限? 它是firstnamelastname还是daemon
  4. 谁需要写入PDOErrors.txt的权限? 它是Apache还是PHP(或两者兼而有之)?
  5. unix-like root account factor的概念在这里的任何地方吗?

编辑:我更新这反映,这不是我必须改变CHMOD设置的folderxyz 。 我不得不改变文件PDOErrors.txt的设置


OP在这里:为了将来的参考,我在这里提出了一个Linux平台的并行问题(附带直观的解释): https : //stackoverflow.com/questions/31389892/why-is-the-output- WWW的数据function于一身的病例和根合另一

  1. get_current_user() (应该)返回文件的所有者,在这种情况下是firstnamelastname 。 有报道说这个功能在平台之间是不一致的。 因此,我不相信它的输出。 daemon是Apache正在运行的用户。
  2. PHP脚本的所有者是根据操作系统拥有文件本身的用户。 您可以在您的脚本所在的目录中运行ls -la来查找该文件所属的用户和组。
  3. 无论您正在编辑脚本的用户都需要能够编写脚本,最有可能的是firstnamelastname+rw )。
  4. 对于文件夹本身,您应该对daemon和PHP文件+r (read)具有+rx (执行和读取)。 在我的XAMMP安装中,他们通过将htdocs所有内容设置为公共可读,从而完成了这一任务,因此daemon可以读取它,但不能写入它。
  5. Mac有一个通常拥有htdocswww目录的root帐户。 它填补了传统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_dir