今天遇到了上面的问题:
[03-Nov-2017 19:29:02 Asia/Shanghai] PHP Fatal error: Call to undefined function header() in /www/xxxx/api/login.php on line 5
[03-Nov-2017 19:27:37 Asia/Shanghai] PHP Fatal error: Call to undefined function dirname() in /www/xxxx/index.php on line 9
...
找不到原因和解决方法。任何人都可以帮助我,谢谢。
添加我的代码。
<?php
header('Content-type:text/html; charset=utf8');
include_once dirname(__FILE__). '/global.inc.php';
echo 'HELLO WORLD';
在我的在线网站上,这个问题有时会发生并持续一天。 我能做的是每 1 小时重新加载一次。
谁知道怎么解决??? 谢谢
更新: 服务器信息添加:Nginx 服务器,CentOS 6.3 版。 PHP 版本 5.4.41
最让我困惑的是这个问题突然出现在我的在线网站上,没有发布任何更改。
最佳答案
一个非常疯狂的猜测,但这些错误可能会欺骗你。
[03-Nov-2017 19:29:02 Asia/Shanghai] PHP Fatal error: Call to undefined function header() in /www/xxxx/api/login.php on line 5
[03-Nov-2017 19:27:37 Asia/Shanghai] PHP Fatal error: Call to undefined function dirname() in /www/xxxx/index.php on line 9
如果 header()
和 dirname()
包含不可见或以某种方式从日志文件中删除的前导 unicode 字符怎么办?它们可能看起来像内置的 PHP 函数,但您的代码可能包含编译形式或运行时的特殊字符。换句话说,header()
可能不是您所想的那样。尽管它在日志中看起来是这样。
我建议快速回顾一下:
谁在编写代码,使用什么编辑器?他们的编辑是否添加了 BOM (Byte Order Marker)到每个文件的开头?如果是这样,请不要那样做。请参阅:UTF-8 BOM signature in PHP files
您的 PHP 文件是否以
declare(encoding=...)
开头?线?如果是这样,那是正确的吗?即,它是否与编辑器的编码匹配?最好排除这一点。是否在 php.ini 中启用了
zend.multibyte
?如果是这样,启用或禁用它有什么区别吗?请参阅:http://php.net/manual/en/ini.core.php#ini.zend.multibytezend.script_encoding
是否设置在 php.ini 中?如果是这样,改变这种情况是否会改善这种情况?请参阅:http://php.net/manual/en/ini.core.php#ini.zend.script-encodingzend.detect-unicode
是否设置在 php.ini 中?如果是这样,改变它会改善什么吗?请参阅:http://php.net/manual/en/ini.core.php#ini.zend.detect-unicode您正在运行 OPcache 扩展吗?例如,APC、Zend Optimizer、较新的内置 OPcache?如果是这样,这些在您监控时是否已损坏?
关于调用 time() header() 等嵌套函数时出现 php fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47095309/