【发布时间】:2010-06-13 00:23:54
【问题描述】:
我有一个非常简单的脚本,用于测试运行 shell_exec(或反引号运算符)是否基本有效:
#!/usr/bin/php5
<?php
echo "This is a PHP script\n";
echo `ls -l /home/stoysnet/`;
除非我以 root 身份运行它,否则它总是给我:
$ ./foo.php
This is a PHP script
Warning: _shell_exec(): Permission Denied in /home/stoysnet/foo.php on line 5
我尝试过通过 PHP 以几种不同的方式运行它,但我总是遇到同样的错误。但是,当我将脚本放入root:root 拥有的/etc/ 的子目录中并以root 执行时,它可以工作。
什么给了?
更新:澄清一下:
- 我正在尝试通过命令行以
stoysnet用户身份运行它。我能够执行通过同一会话传递给shell_exec的命令。 - 如果我将脚本移动到
/etc/somedir/并按照root执行,它会按预期工作。 - 脚本本身运行,而不是反引号运算符或
shell_exec部分 - 设置了执行权限,
777也不起作用。
【问题讨论】:
-
/home/stoysnet 目录的权限/所有权是什么?为了能够“ls”一个目录(例如:列出/枚举其内容),执行脚本的用户必须对该目录具有执行权限(作为所有者、组或作为“每个人”)。跨度>
标签: php linux permissions command-line-interface