Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在将输出重定向到文本文件时使用exec似乎会锁定该文件_Php_Apache - Fatal编程技术网

Php 在将输出重定向到文本文件时使用exec似乎会锁定该文件

Php 在将输出重定向到文本文件时使用exec似乎会锁定该文件,php,apache,Php,Apache,在WAMP配置中,我使用exec执行shell命令,并使用>log.txt重定向输出。在剧本中,突击队员被多次召唤。第一次,文件被创建,第一次输出被写入其中,但文件流似乎没有关闭(我无法删除文件,Windows告诉我文件是由其他人打开的),因此脚本尝试继续加载,但不执行其他操作,并且在我为此脚本设置的5分钟限制后仍在尝试 我做错什么了吗?如果是,为什么?否则问题出在哪里 编辑:我已经通过注释代码行确认这是我问题的根源。此外,尽管我中断了脚本,但该文件仍然被锁定,无法进行任何更改(编辑/移动/删除

在WAMP配置中,我使用
exec
执行shell命令,并使用
>log.txt
重定向输出。在剧本中,突击队员被多次召唤。第一次,文件被创建,第一次输出被写入其中,但文件流似乎没有关闭(我无法删除文件,Windows告诉我文件是由其他人打开的),因此脚本尝试继续加载,但不执行其他操作,并且在我为此脚本设置的5分钟限制后仍在尝试

我做错什么了吗?如果是,为什么?否则问题出在哪里

编辑:我已经通过注释代码行确认这是我问题的根源。此外,尽管我中断了脚本,但该文件仍然被锁定,无法进行任何更改(编辑/移动/删除)

编辑2:使用
pclose(popen(“start/B”$cmd,“r”))
代替,正如中所建议的,无论我是否使用
>log.txt
,似乎都不会带来任何东西

编辑3:在强制不必要地重新启动服务器后,问题不再存在

我和一些同事谈过,他们的应用程序遇到了类似的问题,他们说重启服务器总能“解决”问题。但如果问题迟早会再次出现,我不认为这是一个解决方案。因此,“静默更新”方案似乎更有可能

同时,服务器将迁移到具有较新操作系统(Windows 2008 server)的计算机上。我将拭目以待问题是否再次出现,但如果可能的话,我希望采取措施,以便将来不必处理它。

为什么不执行($cmd,$output,$result)?这将返回$output变量中的输出。然后,您可以执行一个文件\u put\u contents($file,introde(\r\n“,$output),file\u APPEND)


这将允许您以纯php的方式将命令的输出直接添加到日志文件中

为什么要将不同进程的输出记录在同一文件中?写入文件的进程始终在file@Darhazer字体嗯,它曾经奏效过,我不知道是什么改变了它,使它无法工作。。。无论如何,将输出记录到不同的文件中(使用时间戳)不会带来任何结果,它在第一次尝试时仍然会阻塞。我知道,我试过了。它是WAMP,据你所知,一个秘密更新出现了,并且改变了功能。据我所知,这种非锁定行为根本不应该起作用,因此将其解释为安全修复是合理的。如果在同一个EXEC()中或在两个EXEC()中一个接一个地执行命令,会发生什么情况?@BurninLeo,它没有通过第一个。