Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么设置确定PHP在使用不存在的索引访问数组时是否会引发错误?_Php_Arrays_Apache_Iis 7 - Fatal编程技术网

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

什么设置确定PHP在使用不存在的索引访问数组时是否会引发错误?,php,arrays,apache,iis-7,Php,Arrays,Apache,Iis 7,我想让一个PHP5应用程序在IIS7上运行 这个应用程序似乎是在这样的假设下构建的,即使用不存在的索引访问数组只会返回null,而不会引发错误并停止程序 给定以下代码: <?PHP $testarray = array(); print $testarray[1]; print 'hello'; ?> 但是如果我注释掉第一个print语句,它将正确执行并显示hello IIS和Apache都指向相同的代码库,使用相同的PHP实例(版本为5.3.5)和相同的PHP配置 由

我想让一个PHP5应用程序在IIS7上运行

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

给定以下代码:

<?PHP
  $testarray = array();
  print $testarray[1];
  print 'hello';
?>
但是如果我注释掉第一个print语句,它将正确执行并显示hello

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

由于这是一个语言问题,我不明白为什么我使用什么web服务器会有关系,但我完全不明白为什么一个实例在另一个实例抛出错误时工作

什么设置可能导致这种差异


如果有一种方法可以将IIS配置得更为宽松,我宁愿这样做,而不是在访问数组之前重新分解整个应用程序以检查数组的索引。

您可以通过更改php.ini中的

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


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

只需执行@print$testarray[1]@米奇,这是个可怕的主意。各位,请不要听他的。错误抑制是错误的。我猜这就像!在CSS中很重要。尽可能避免它。@NullUserExceptionఠ_ఠ 感谢你成为一名福音传道者,但他似乎只是要求一个快速而肮脏的解决方案。我想也是这样,但问题是,两种环境都将错误模式设置为E_ALL。我通过在两个环境上执行phpinfo来验证这一点。所以我不知道这个设置怎么会导致这个问题,除非IIS 7做了一些不同的事情。实际上我只是用“error\u reporting E\u ALL ^E\u NOTICE;”运行它在顶端,现在它工作了!因此,错误报告设置是正确的。不幸的是,这并没有告诉我为什么IIS会忽略php.ini设置。但是无论如何,现在这个东西正在运行。啊,原来IIS7指向的是正确的PHP.INI,而WAMP指向的是Apache文件夹中的那个。这有点道理。因此,如果我将它们都指向同一个INI文件,我应该会得到一致的结果。
    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