php - 如何调试 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 命令不起作用。

最佳答案

看看 /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/

相关文章:

php - 我可以创建没有 clientUserId 的收件人 View 吗

php - 替换 ereg_replace()

javascript - Ajax 响应不会在 php while 循环中更新

javascript - Javascript 中的 Symfony2 密码编码器函数

php - PHP 中的 switch 语句

php - MySQLI_ASSOC 转 JS 数组

php - 从存储在另一个类中的实例访问类常量

php - 在 laravel 的急切加载中从多对多关系中获取第一个或最新的第一个

php - 如何使 ZEND_BEGIN_ARG_INFO_EX 控制传递给 PHP 扩展的参数数量?

php - 如何用 PHP 压缩 XML?