2009-04-30 46 views
27

我在外国Linux系统上,需要确定Apache运行的用户(以及php)。从php获取Apache Linux用户

目的: 我需要的脚本的所有者(这是没有问题的,因为我可以用SplFileInfo),并将其与apache进程的所有者。

我接受任何替代方案。

问候, 马里奥

编辑: 附加信息:

的脚本是一个缩略图生成,使用XML文件来生成较大的图像大拇指。该脚本需要创建文件夹和写入文件。由于我无法影响php配置,并且我没有任何shell访问权限,所以必须非常安静地完成。 创建过程通过异常停止并发送失败的邮件。由于php的大部分函数都不能在failue上抛出异常,因此我需要一些手动检查来确定我所处的环境。因此,我需要apache用户将它与某个目录或文件所有者进行比较。

+0

作为选项,您可以简单地使用/ tmp,这对每个人都是可写的。 – Anonymous 2009-04-30 08:50:46

+0

这对我们的案例没有用处,因为我们无法提供来自docroot之外的任何生成的图像。 – 2009-04-30 11:42:52

回答

52

可以调用PHP exec函数来执行WHOAMI

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

phpinfo会转储很多系统信息。对于apache2安装,有一部分显示apache用户和组id。尝试创建一个只包含一行的php脚本,调用phpinfo(),然后在Web浏览器中打开它。

+0

那不是目标;) 我知道如何通过php信息获取用户...我需要从脚本内获取字符串的名称。 – 2009-04-30 08:32:14

+0

...和解析phpinfo(INFO_MODULES)不是一种替代;) – 2009-04-30 08:33:19

8

看到posix_getuid()和posix_getpwuid()这里

5

一些复杂的答案。

这个工作对我来说:

$user = getenv('APACHE_RUN_USER'); 

不知道这仅仅是被添加到apache的,因为这问题被问了一个新的东西,但它现在肯定有。