在Debian 8,我正在尝试创建一个可以放在下面的脚本/sbin
(它在我的$PATH
环境变量中),以便可以运行它,该命令只是几行的简单回显。我已经创建了一个 bash 脚本并使其可执行,因此我可以像任何其他命令一样从我的终端运行它,但我无法从我的 PHP 脚本运行它,即使环境变量$PATH
在我的终端和我的脚本中是相同的(我已经验证了这一点)。
该脚本将被调用ifconfig
(我知道它是一个过时的程序,在 debian 8 中不再存在,但我现在无法绕过它,所以我需要一个存根)。
- 当我
ifconfig
从终端运行时,我得到了所有成功的输出。 - 当我运行
ifconfig
脚本时,我得到一个FALSE
。 - 当我运行 a 时
which ifconfig
,终端输出/sbin/ifconfig
。 - 当我从 PHP 脚本运行时
which ifconfig
,它没有返回任何路由。
如何让这个 bash 脚本在 PHP 上运行?shell_exec('ifconfig');
或者如何操纵shell_exec('ifconfig');
该脚本在 apache-2.4 下运行
我发布此信息是因为我不确定它应该出现在 Stack Overflow、Super User 还是 Server Fault 中。
答案1
您应该注意以下几点:
- 您的 php.ini 配置文件是否允许使用 shell_exec()?
- 通常,所有命令都将使用 www-data 用户执行。话虽如此,您应该检查用户是否真的可以运行相关命令。如果您所在的系统使用 sudo,那么这是一种允许它的好方法。
- 请记住,当 safe_mode 处于开启状态时,您不能使用 shell_exec()。
- error.log 和 access.log 文件是检查正在发生的事情的最佳位置,特别是当您没有打开 display_errors 时。
再见!