首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检索PHP exec()错误响应?

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

Stack Overflow用户
提问于 2008-12-06 02:39:14
回答 5查看 63.2K关注 0票数 39

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

代码语言:javascript
复制
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess');

当您在末尾添加一个die()时,它会捕捉到有一个错误:

代码语言:javascript
复制
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess') or die('what?!');

对于上面的exec()语句,权限问题导致了错误,但PHP没有显示该错误。如何在PHP中显示正在发生的错误?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-12-06 02:44:55

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

代码语言:javascript
复制
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess',$output);
var_dump($output);
票数 18
EN

Stack Overflow用户

发布于 2016-10-28 04:44:03

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

代码语言:javascript
复制
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess 2>&1',$output);
var_dump($output);
票数 27
EN

Stack Overflow用户

发布于 2014-06-07 05:52:47

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

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

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

代码语言:javascript
复制
$cmd.=" > $error_log 2>&1"

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

另请注意,如果在命令末尾加上&,则对$error_log内容的即时检查可能不会显示日志信息-脚本可能会在操作系统完成之前检查/处理文件。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/345794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档