下面是我尝试执行的命令,但没有成功:
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess');
当您在末尾添加一个die()时,它会捕捉到有一个错误:
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess') or die('what?!');
对于上面的exec()语句,权限问题导致了错误,但PHP没有显示该错误。如何在PHP中显示正在发生的错误?
发布于 2008-12-06 02:44:55
您可以通过传递可选的第二个参数来接收exec function的输出结果:
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess',$output);
var_dump($output);
发布于 2016-10-28 04:44:03
以下代码将捕获正常输出(来自StdOut)和错误输出(来自SdtErr)。
exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess 2>&1',$output);
var_dump($output);
发布于 2014-06-07 05:52:47
如果调用程序将输出输出到STDERR,则$output参数似乎不起作用。
处理此问题的更好方法是将exec的输出重定向到一个文件,然后在出现错误情况时显示该文件的内容。
如果$cmd包含exec命令,则添加类似以下内容:
$cmd.=" > $error_log 2>&1"
然后在$error_log中检查filespec的内容,以获得有关命令失败原因的详细信息。
另请注意,如果在命令末尾加上&,则对$error_log内容的即时检查可能不会显示日志信息-脚本可能会在操作系统完成之前检查/处理文件。
https://stackoverflow.com/questions/345794
复制相似问题