fwrite到STDERR导致可执行脚本出错

时间:2014-09-10 15:22:21

标签: php fwrite stderr command-line-interface

我有一个奇怪的问题。只有在可执行的PHP脚本中才会发生此错误,我不知道为什么

  

警告:fwrite()期望参数1为资源,字符串为

我有以下示例:

-rwxr-xr-x 1 root root    87 Sep 10 16:55 test*
-rw-r--r-- 1 root root    33 Sep 10 17:10 test.php

文件./test是:

#!/usr/bin/php -q
<?php
fwrite(STDERR, "test\n");

和文件test.php是(完全相同,只是缺少shebang):

<?php
fwrite(STDERR, "test\n");

我在那台机器上做了一些测试,它的行为真的很奇怪:

# ./test 
<br />
<b>Warning</b>:  fwrite() expects parameter 1 to be resource, string given

# php -q test.php 
test

# php -r 'fwrite(STDERR, "test\n");'
test

有谁知道为什么fwrite到STDERR在可执行的php文件中不起作用?

PHP 5.4.28 (cli) (built: May 19 2014 15:39:12)

1 个答案:

答案 0 :(得分:1)

当我使用shebang #!/usr/local/bin/php时,错误消失了。有道理,因为php是从源代码编译的。

但我仍然不明白为什么会发生这种情况。我试图用错误的&#39;来研究phpinfo。 shebang和我仍然以PHP Version 5.4.28为版本,所以没有多次安装。