2013-10-10 22 views
0

我试图调试从命令行运行的PHP应用程序。我希望稍后使用cronjob来每小时调用一次该模块。强制PHP使用命令行概述错误

对于调试我执行PHP脚本是这样的:

php -c /etc/php5/apache2/php.ini /var/www/module/test/autostart/start.php 12 & 

(忘了“12” - 这是为脚本参数)

现在基本上我通过SSH得到这样的输出:

[2] 10181 
[1] Done    php -c /etc/php5/apache2/php.ini /var/www/module/test/autostart/start.php 12 

我不知道我改变了什么,但几个星期前我直接在屏幕上得到了实际的php错误。这就是我所期望的。但我不知道如何强制PHP直接向我输出结果。

回答

1

当您在末尾使用&时,命令在后台启动。您可以通过命令jobs查看后台进程。当你尝试它时,你可以看到php进程处于“停止”状态。

问题是,PHP正在等待输入。 它是由这个PHP扩展造成的:

readline php extension

运行这样说:

php -c /etc/php5/apache2/php.ini /var/www/module/test/autostart/start.php 12 < /dev/null & 

或禁用扩展。

0

从命令行末尾删除&符号。它会通知shell在后台运行该命令。

编辑:否则,可能是因为您正在使用网络调整的php.ini:我期望配置将错误记录到日志文件中。

+0

不,这不应该是原因。即使在后台,输出仍然通过管道输出到stdout/stderr ... – bwoebi

2

您将看不到任何输出,因为您正在使用“&”运行脚本,您使用fg命令将该进程恢复到前台。

+0

从评论引用到上一个答案:_No,那不应该是原因。即使在后台,输出仍然通过管道输出到stdout/stderr ... _ – bwoebi

+0

谢谢各位! 我解决了这个命令行的问题: php -c /etc/php5/apache2/php.ini /var/www/module/test/autostart/start.php 12> log.txt& –