exec 命令在我的服务器上不起作用,它不执行任何操作,我关闭了 safe_mode,并验证了所有控制台命令都在工作,我已经尝试使用绝对路径。我检查了应用程序的权限,我需要的所有应用程序都有执行权限。我不知道还能做什么,这里是我尝试过的代码的概要。
echo exec('/usr/bin/whoami');
echo exec('whoami');
exec('whoami 2>&1',$output,$return_val);
if($return_val !== 0) {
echo 'Error<br>';
print_r($output);
}
exec('/usr/bin/whoami 2>&1',$output,$return_val);
if($return_val !== 0) {
echo 'Error<br>';
print_r($output);
}
最后两段代码显示:
Error
Array ( )
我已经联系了服务器服务,但他们无法帮助我,他们不知道为什么 exec 命令不起作用。
最佳答案
看看 /etc/php.ini
,在下面:
; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.disable-functions
disable_functions =
确保 exec 没有像这样列出:
disable_functions=exec
如果是这样,将其删除并重新启动 apache。
为了便于调试,我通常喜欢手动执行 php 文件(无需在主 ini 中设置即可请求更多错误)。为此添加标题:
#!/usr/bin/php
ini_set("display_errors", 1);
ini_set("track_errors", 1);
ini_set("html_errors", 1);
error_reporting(E_ALL);
到文件的开头,使用 chmod +x myscript.php
授予它权限并执行它 ./myscript.php
。这是非常谨慎的,尤其是在向日志文件写入大量内容的繁忙服务器上。
编辑
听起来像是权限问题。创建一个 bash 脚本来执行一些简单的操作,如 echo "helo world"
并尝试运行它。确保您有权访问该文件以及包含该文件的文件夹。您可以只执行 chmod 755
来进行测试。
关于php - 如何调试 exec() 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39052389/