PHP脚本不会在后台运行

时间:2011-11-19 14:44:58

标签: php macos command-line-interface

我正在尝试在后台运行一个php CLI脚本,它只是不会运行 - 它的状态为Stopped SIGTOU(试图写输出) - 这是详细信息

  • Mac OS X Lion 10.7.2
  • PHP 5.3.6 with Suhosin-Patch(cli)(建于2011年9月8日19:34:00)

我创建了一个基本脚本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脚本在后台执行没有任何问题。

3 个答案:

答案 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”,我猜它会与它有关; - )