我有一个奇怪的问题。只有在可执行的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
文件所在位置/测试是:
#!/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)
当我使用shebang #!/usr/local/bin/php
时,错误消失了。有道理,因为php是从源代码编译的。
但我仍然不明白为什么会在另一条道路上发生这种情况。我试着使用"错误的"shebang查看phpinfo,但我仍然得到PHP Version 5.4.28
作为版本,所以没有多个安装。