当前位置:  开发笔记 > 编程语言 > 正文

如何检索PHP exec()错误响应?

如何解决《如何检索PHPexec()错误响应?》经验,为你挑选了5个好方法。

下面是我尝试执行的命令,但没有成功:

exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess');

当您在末尾添加die()时,它会捕获到错误:

exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess') or die('what?!');

对于上面的exec()语句,权限问题导致错误,但PHP没有显示它.你如何从PHP显示出现了什么错误?



1> Eran Galperi..:

您可以通过传递可选的第二个参数来接收exec函数的输出结果:

exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess',$output);
var_dump($output);


在这种情况下,$ output只保存sdtout的输出,而不是来自sdterr

2> 小智..:

如果调用程序将输出吐出到STDERR,则$ output参数似乎不起作用.

处理此问题的更好方法是将exec的输出重定向到文件,然后在出现错误情况时显示该文件的内容.

如果$ cmd包含exec命令,则添加如下内容:

$cmd.=" > $error_log 2>&1"

然后检查$ error_log中filespec的内容,以获取有关命令失败原因的详细信息.

另请注意,如果使用&命令结尾对其进行分叉,则立即检查$ error_log的内容可能不会显示日志信息 - 脚本可能会在操作系统完成之前检查/处理该文件.



3> Amaynut..:

以下代码将捕获正常输出(来自StdOut)和错误输出(来自SdtErr).

exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess' . '2>&1',$output);
var_dump($output);



4> 小智..:

这对我有用:在你的命令结尾附加2>&1.

在这里看到: php exec()在执行svn命令时没有在输出中返回错误消息

干杯



5> Bonfix Ngeti..:

这在几个场景中对我有用:

 ob_start();
 exec($cmd . " 2>&1", $output);
 $result = ob_get_contents();
 ob_end_clean();
 var_dump($output);

"2之间的空间很重要


你是生命之神!
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有