我可以在PHP中找到运行Web服务器的用户吗?

时间:2009-05-05 23:06:32

标签: php apache

我正在用PHP编写一个简单的Web应用程序,需要对服务器上的目录具有写入权限,如果该目录不可写我想显示一条错误消息,说明将目录的所有者设置为谁网络服务器正在运行(例如,www-data,nobody),但由于大多数人不知道这一点,能够告诉他们将目录提交给谁是很好的。是否可以从PHP中找到它?

8 个答案:

答案 0 :(得分:18)

<?php
  echo exec('whoami');
?>

答案 1 :(得分:3)

我使用的快速技巧是将文件写入/tmp/。它应该使用PHP进程使用的用户和组创建。

答案 2 :(得分:3)

在Unix平台上,如果安装或编译了posix扩展,即使安装了安全模式,此解决方案也可能正常工作。

$user = posix_getpwuid(posix_geteuid());
echo $user['name'];

文档为here

答案 3 :(得分:2)

查看shell_exec()

答案 4 :(得分:2)

如果在linux / unix上:

<?php
$temp = tmpfile();
print_r(posix_getpwuid(fileowner($temp)));
?>

答案 5 :(得分:0)

如果你可以运行一些bash,你可以使用whoami或者你可以在/proc

中找到它

答案 6 :(得分:0)

该错误消息在Windows服务器环境中崩溃。 “请确保Web服务器对目录具有写入权限”可能是更好的错误消息。

答案 7 :(得分:0)

在某些使用print( int('deadbeef', 16) ) >>> 3735928559 print( int('dead beef', 16) ) ValueError: invalid literal for int() with base 16: 'dead beef' print( int('hello wolrd', 16) ) ValueError: invalid literal for int() with base 16: 'hello world' print( int('helloworld', 16) ) ValueError: invalid literal for int() with base 16: 'helloworld' echo exec('whoami');的服务器中 什么也不会返回,但是在每种情况下您都可以使用get_current_user

来获得当前用户
exec('whoami',$out); echo $out;