繁体   English   中英

哪些设置确定PHP使用不存在的索引访问数组时是否会引发错误?

[英]What setting(s) determine whether PHP will throw an error on accessing an array using a non-existent index?

我试图在IIS7上运行PHP 5应用程序。

该应用程序似乎是在这样的假设下构建的:使用不存在的索引访问数组只会返回null,而不会引发错误并暂停程序。

给出以下代码:

<?PHP
  $testarray = array();
  print $testarray[1];
  print 'hello';
?>

通过Apache (安装在WampServer下)访问Apache时 ,它将仅在屏幕上打印“ hello”,而忽略该错误。

通过IIS 7访问时,它将生成以下异常:

    PHP Notice:  Undefined offset: 1 in C:\Users\Jonathan\Projects\MyApp\api\inf.php on line 3
    PHP Stack trace:
    PHP   1. {main}() C:\Users\Jonathan\Projects\MyApp\api\inf.php:0

但是,如果我注释掉第一个打印语句,它将正确执行并显示“ hello”。

IIS和Apache都使用相同的PHP实例(版本为5.3.5)和相同的PHP配置指向相同的代码库。

由于这是一个语言问题,因此我不明白为什么使用哪种Web服务器会很重要,但是我完全不知道为什么一个实例在另一个实例抛出错误时可以工作。

哪种设置可能是造成这种差异的原因?

(如果有一种方法可以将IIS配置为更宽大,我宁愿这样做,而不是在访问它们之前对整个应用程序进行重构以检查索引是否包含数组。)

您可以通过更改php.ini中的错误报告设置来更改此行为。

您可以设置不同级别的错误报告。 例如,尝试访问未定义的数组索引是E_NOTICE 您可以选择是否显示此类型的错误。 要查看其他级别,请参阅此页面。

任何生产网站都不应该显示任何错误,而您可能应该在开发环境中显示每个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM