使用unix作为后台进程运行php脚本

使用unix作为后台进程运行php脚本,php,unix,background-process,Php,Unix,Background Process,我正在尝试使用unix运行名为daemon.php的php脚本(如下),作为后台进程 #!/usr/bin/php <?php $count = 0; while(true){ $count = $count + 1; file_put_contents('daemon1.log', $count, FILE_APPEND); sleep(1); } ?> 文件deamon1.log开始写入。此外,如果我输入命令: ps | grep php 我把它弄

我正在尝试使用unix运行名为daemon.php的php脚本(如下),作为后台进程

#!/usr/bin/php
<?php
$count = 0;
while(true){
    $count = $count + 1;
    file_put_contents('daemon1.log', $count, FILE_APPEND);
    sleep(1);  
}
?>
文件deamon1.log开始写入。此外,如果我输入命令:

ps | grep php
我把它弄出去了

10573 ttys000    0:00.20 php daemon.php
如果我尝试使用以下命令将其作为后台进程运行

php daemon.php &
ps | grep php
我把控制台拿出来

[1] 10584
指挥部呢

php daemon.php &
ps | grep php
返回

10584 ttys000    0:00.02 php daemon.php

但是没有任何东西写入deamon1.log。有人能告诉我我做错了什么吗?

试试另一种方法

$file_handler = fopen( 'daemon1tempname.log', 'a+') or die ('Can not work with the File!');

$count = 0;
while(true){
    $count = $count + 1;
    fwrite($file_handler, "Test {$count}\n" );
    sleep(1);  
}
fclose($file_handler);
请注意文件的不同名称。只需确保使用新文件即可。 如果有效,请使用所需的文件进行测试。
如果这不起作用,那么您就知道这是一个权限问题。

您使用的是什么版本的Unix?我在GNU/Linux Debian下运行它,没有任何问题。我怀疑用户和文件写入权限有问题。cli用户和apache用户将不会是sameI,因为我使用的是11.4.2版本更改权限没有帮助以root身份登录,
su apache_user-c php daemon.php
查看发生了什么如果不关闭文件,则不会看到任何外部写入的内容。