我们有使用标准功能strtolower
的代码。
但是,有时会随机出现以下错误:
Fatal error: Uncaught Error: Call to undefined function strtolower() in /path/xxxx.php:20
Stack trace:
#0 /path/xxxx.php(63): ffff()
#1 {main} thrown in /path/xxxx.php on line 20
只要我可以检查strtolower
是标准功能,它不依赖任何内容,并且应该始终可用?
我无法透露代码,但是是这样的:
function browser_check(){
foreach($_REQUEST as $key => $data){
$data = strtolower($data);
// check for SQL injections and other hacks
}
}
browser_check();
没有包含或名称空间。我们使用php.ini将该文件“前缀”在我们网站上的任何其他代码之前执行。
如果在带名称空间的文件中添加前缀,我将检查会发生什么情况。
谁知道,可能是PHP错误:)
问题不是“为什么我的功能不起作用”的标准问题。
这是PHP错误或服务器配置错误。
如果可以的话,我会提供有关该问题的更多信息,但是目前没有足够的信息。
我们试图从两周后开始理解它,但是没有成功。
此刻,我要这样离开。我不确定是否可以file_put_contents
使用它,
try{
$data = strtolower($data);
}catch(Exception $e){
}
尝试/捕获显然对这里没有帮助。
当前我将其保留为:
if (function_exists('strtolower')){
$data = strtolower($data);
}
与此同时,我使用HEX编辑器检查了文件。空间是真实空间0x20。
我也开始记录POST / GET数据,我至少看到有时候没有$ _REQUEST要处理,例如foreach
循环不会在内部执行代码,因此问题出在PHP linter中。
朋友能够在Google中看到很多有关类似问题的结果,但是没有结果是非常有用的。搜索是“调用未定义函数:strtolower”。
即使代码是这样,我们仍然会出错:
if (function_exists('strtolower')){
$data = strtolower($data);
}
然后我们像这样进行更改,并再次出现错误:
try{
$data = \strtolower($data);
}catch(\Error $e){
}
答案 0 :(得分:1)
事实证明,动态链接存在一些问题。
我想系统的某些软件包(例如libc.so)已更新,然后开始出现奇怪的行为。
我要做的就是停止Apache,然后重新启动。