我管理一个非常古老的PHP / MySQL站点,它广泛使用以下语法来检查是否设置了变量:
if($var){ /* do something */ }
我知道处理此问题的正确方法是使用 isset()功能... 但我不能。在线版本工作正常(在旧的gentoo服务器上),本地版本在具有wamp 2.0的非常旧的Windows XP计算机上工作正常(我知道),并且这种语法在代码中随处使用。
我想在更新/更快的计算机上复制我的本地版本。我在旧的Windows XP计算机上安装了相同的wamp版本,但是我得到了数百个“通知:未定义的变量/索引...... ”错误。我怀疑可以在wamp PHP设置中完成某些事情,但我不知道在哪里查看或做什么。我在旧计算机和在线工作:必须有一种方法可以使它在更新的计算机上运行。
编辑:我想“告诉”PHP将“未定义”变量处理为“假”变量(这就是它在XP服务器上的工作方式)。关闭错误将无法解决问题。我需要if($var){...
作为if(isset($var)){...
。
在两台服务器上(XP en new PC),版本如下:
感谢任何帮助&提前致谢。 这是我在这个好网站上的第一个问题:道歉,如果我做错了什么。
编辑2:感谢@Boratzan找到了解决方案(见balow)。我将旧计算机中的php.ini
(来自 Apache文件夹中的1个和 PHP文件夹中的1个)复制到新计算机中,并进行了一些次要路径编辑考虑到两个wamp服务器没有安装在同一路径中这一事实。
编辑3:经过进一步调查,似乎@Boratzan从一开始就是对的。解决方案是将位于 apache / ApacheX.X.XX / bin / 中的 php.ini 文件中的error_reporting
更改为E_ALL & ~E_NOTICE
strong>目录。这是一个草率的解决方案,但它
答案 0 :(得分:0)
我不推荐它,但是如果你想让它在没有显示错误的情况下运行,请使用以下代码禁用error_reporting:
error_reporting(0);
OR
E_ALL & ~E_NOTICE
同样,最好修改您的代码,但如果您继续这样做,您也可以尝试将值设置为display_errors
,只隐藏 NOTICE 警告
要回答你的问题,为什么它在之前的WAMP安装和在线工作,可能是因为那些off
配置为preg_replace
(主要在生产环境中完成,在开发时不推荐)
由于以上都没有帮助解决您的问题,您可以比较安装中的两个.ini文件,或者只是将工作文件复制到新文件中(假设它们都运行相同的版本)。
WAMP有两个php.ini文件,一个在PHP文件夹中,另一个在Apache文件夹中,请确保将它们复制(或者至少是位于Apache文件夹中的文件)。
答案 1 :(得分:0)
您可以使用@
来抑制特定错误:http://php.net/manual/en/language.operators.errorcontrol.php
或者平心地关闭所有错误。