一尘不染

如何调试exec()问题?

php

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命令为什么不起作用。


阅读 295

收藏
2020-05-26

共1个答案

一尘不染

看看/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测试。

2020-05-26