9 回答
TA贡献1943条经验 获得超7个赞
一般是因为“糟糕的编程”,现在或以后都有可能出错。
如果这是一个错误,请首先对变量进行适当的赋值:$ varname = 0;
如果它确实只是有时定义
if (isset($varname))
,请在使用之前测试它:如果是因为拼错了,那就纠正错误
甚至可能在PHP设置中转动警告
TA贡献1789条经验 获得超8个赞
这意味着您正在测试,评估或打印尚未分配任何内容的变量。这意味着您要么输入错误,要么需要先检查变量是否已初始化为某些内容。检查您的逻辑路径,它可以设置在一个路径中,但不能设置在另一个路径中。
TA贡献1812条经验 获得超5个赞
我不想禁用通知,因为它有用,但是想避免太多打字。
我的解决方案是这个功能:
function ifexists($varname){ return(isset($$varname)?$varname:null);}
所以,如果我想引用$ name和echo if exists,我只需写:
<?=ifexists('name')?>
对于数组元素:
function ifexistsidx($var,$index){ return(isset($var[$index])?$var[$index]:null);}
在页面中如果我想引用$ _REQUEST ['name']:
<?=ifexistsidx($_REQUEST,'name')?>
TA贡献1942条经验 获得超3个赞
这是因为没有定义变量'$ user_location'。如果您正在使用任何if循环来声明'$ user_location'变量,那么您还必须有一个else循环并定义相同的循环。例如:
$a=10;if($a==5) { $user_location='Paris';} else { }echo $user_location;
上面的代码将创建错误,因为if循环不满足,并且在else循环中'$ user_location'未定义。仍然要求PHP回应变量。因此,要修改代码,您必须执行以下操作:
$a=10;if($a==5) { $user_location='Paris';} else { $user_location='SOMETHING OR BLANK'; }echo $user_location;
TA贡献1784条经验 获得超8个赞
回答“”他们为什么突然出现?我以前使用这个脚本多年,我从来没有遇到任何问题。“
大多数网站在“显示所有错误,但不是'通知'和'已弃用'”的“默认”错误报告下运行是很常见的。这将在php.ini中设置并应用于服务器上的所有站点。这意味着示例中使用的那些“通知”将被抑制(隐藏),而其他错误(被认为更为关键)将被显示/记录。
另一个关键设置是可以隐藏错误(即display_errors
设置为“off”或“syslog”)。
在这种情况下会发生的事情是,error_reporting
更改为显示通知(根据示例)和/或设置已更改为display_errors
屏幕(而不是抑制它们/记录它们)。
为什么他们改变了?
显而易见/最简单的答案是,有人在php.ini中调整了这些设置中的任何一个,或者PHP的升级版现在使用了之前的不同php.ini。这是第一个看的地方。
但是,也可以覆盖这些设置
.htconf(网络服务器配置,包括虚拟主机和子配置)*
的.htaccess
在PHP代码本身
其中任何一个也可以改变。
还有一个额外的复杂性,即Web服务器配置可以启用/禁用.htaccess指令,因此如果.htaccess中的指令突然启动/停止工作,那么您需要检查它。
(.htconf / .htaccess假设您正在以apache身份运行。如果运行命令行,则不适用;如果运行IIS或其他Web服务器,则需要相应地检查这些配置)
摘要
php.ini中的检查
error_reporting
和display_errors
php指令没有改变,或者你之前没有使用不同的php.ini。.htconf(或vhosts等)中的检查
error_reporting
和display_errors
php指令没有改变.htaccess中的检查
error_reporting
和display_errors
php指令没有改变如果.htaccess中有指令,请检查.htconf文件中是否仍允许它们
最后检查你的代码; 可能是一个无关的图书馆; 看是否
error_reporting
和display_errors
PHP指令已经被设置在那里。
添加回答
举报