我有一个网站在共享主机上,我正在转移到 Centos 5.8 VPS - 所有页面加载正常,其中包括一堆带有各种数组、替换和文件读取的本地 php,但提交表单 php 失败 - 我在不同点包含了各种回显,发现在行之后
$txt = filter_var($txt,FILTER_SANITIZE_SPECIAL_CHARS);
不会显示任何回显,并且脚本永远不会到达末尾(重定向) - 导致屏幕空白或屏幕仅显示该行之前的回显
如果我删除该行,脚本将到达末尾,但不会写入它应该写入的文件。该代码只是基本的:
//open the file and choose the mode
$fh = fopen("../file.txt", "a");
fwrite($fh, $data);
//close the file
fclose($fh);
我的设置中哪一部分可能与共享主机设置不同,从而导致这种行为差异?是我缺少依赖项还是我的配置有问题?
答案1
听起来 PHP 脚本在那一行就彻底死掉了;在调试时打开错误报告将有助于解决这个问题(错误可能已经存在于您的 Apache error.log 中)。但是,最可能的解释是 filter_var 函数不存在。
我想到两种解释:
- 您的 PHP 版本低于 5.2.0;早期版本的 PHP 没有该功能。
- 您的 PHP 是在没有的情况下编译的
--enable-filter
;请检查 phpinfo() 以查看是否为您的 PHP 构建启用了过滤器。