我正在将文件移动到服务器,并在"模式"中使用$ _GET [mode]等变量而没有''(单引号).它在本地运行完美,但在服务器上我收到通知..我怎么能克服这个?这是我的phpinfo文件 phpinfo 有没有办法我们可以有相同的行为在服务器上工作?
你怎么能克服E_NOTICE那些抱怨你忘了你的字符串引号?
在字符串周围添加引号.
$_GET['mode']
Run Code Online (Sandbox Code Playgroud)
此外,它听起来像error_reporting本地服务器上的级别是不够的.应该很高,以便在开发网站/应用程序时看到这些错误.
在您的生产服务器上,它可能会设置得更低.
为什么$ foo [bar]错了?
始终在字符串文字数组索引周围使用引号.例如,
$foo['bar']是正确的,而$foo[bar]不是.但为什么?在旧脚本中遇到这种语法是很常见的:
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>
Run Code Online (Sandbox Code Playgroud)
这是错误的,但它确实有效.原因是此代码具有未定义的常量(
bar)而不是字符串('bar'- 注意引号).PHP可能在将来定义常量,不幸的是,这些代码具有相同的名称.它的工作原理是因为PHP自动将一个裸字符串(一个与任何已知符号不对应的不带引号的字符串)转换为包含裸字符串的字符串.例如,如果没有已命名的已定义常量bar,那么PHP将替换为字符串'bar'并使用它.
所以,换句话说:mode是一个未定义的常量.
引用常量PHP手册:
如果使用未定义的常量,PHP假定您指的是常量本身的名称,就像您将其称为字符串一样(CONSTANT vs"CONSTANT").一个级别的错误
E_NOTICE发生这种情况时会发出.另请参阅手册输入,了解为什么$foo[bar]错误(除非您先将define()条形图作为常量).如果您只想检查是否设置了常量,请使用该defined()功能.
解决方案:在密钥周围加上引号.
| 归档时间: |
|
| 查看次数: |
4467 次 |
| 最近记录: |