我正在尝试在后台运行一个php CLI脚本,它只是不会运行 - 它的状态为Stopped SIGTOU(试图写输出) - 这是详细信息
我创建了一个基本脚本test.php
<?php echo 'Hello world'.PHP_EOL; ?>
以下是各种测试的结果: -
php -f test.php
(显示Hello world)php -f test.php >test.log 2>&1
(Hello world进入test.log)php -f test.php >test.log 2>&1 &
---我得到[1]+ Stopped(SIGTTOU) php -f test.php > test.log 2>&1
- 工作就在那里,什么都不做,但是lsof显示日志文件已打开这与PHP有关吗?类似的shell脚本在后台执行没有任何问题。
答案 0 :(得分:6)
如果在构建php时启用了readline,只需将/ dev / null作为输入。
在上面的示例中,它将是:
php -f test.php </dev/null >test.log 2>&1
答案 1 :(得分:1)
现在已经解决了 - 感谢所有回复的人。问题是Apple提供了预先构建了操作系统的PHP - CLI版本是使用readline构建的 - http://www.php.net/manual/en/intro.readline.php ...这可以防止任何后台运行脚本,因为readline会自动启动IO与TTY ... < / p>
我的问题是我无法构建我自己的PHP版本 - &gt; http://forums.macrumors.com/showthread.php?t=1284479 - 一旦我解决了我的后台脚本问题就消失了:)
答案 2 :(得分:-2)
好吧,一个PHP脚本在完成执行时会停止,即一旦输出字符串就会执行一个简单的回声“Hello World”,我猜它会与它有关; - )