【问题标题】:IIS PHP 500 ErrorIIS PHP 500 错误
【发布时间】:2012-06-21 21:22:37
【问题描述】:

我有一个应用程序在两个地方运行——一个在 OS X 上使用 PHP 5.3 和 Apache 的开发 MAMP 服务器,以及一个使用 PHP 5.3 的生产 IIS 6.0 服务器。

问题是,该应用程序在 Apache 上运行良好。没有错误、警告或任何东西。

但是当我调用 IIS 服务器上的实用程序类的静态函数时,我收到 500 错误。问题是,该函数永远不会被调用——在函数的开头放置一个“echo”没有任何作用,这告诉我问题不是函数的代码inside。 .. 该类的其他静态函数工作正常。

检查日志 (C:\Windows\temp\php-errors.log) 未显示与此问题相关的任何内容,但它正在正确记录其他错误(意外字符和其他错误)。

这是被调用的函数,也是脚本停止执行的地方:

json_encode(Utilities::ContextifyToUser(Article::getArticlesInCollectionOfUser($user), $user);

json_encodegetArticlesInCollection 分开表明它们都在工作并返回正确的值。杀死它的是“上下文化”功能。

这是 contextify 函数,在名为 Utilities 的类中定义:

public static function ContextifyToUser($obj = array(), $user = null){
        if(is_null($user) || !is_array($obj)){
            return null;
        }

        foreach($obj as $key => $value){
            $obj[$key] = $value->contextifyToUser($user);
        }

        return $obj;
    }

正如我之前提到的,函数中的任何代码都不会被调用。如果我在函数定义后加上“echo 'hello'”,它就永远不会被调用。

是我的代码,还是 IIS 有什么奇怪的地方?考虑到这在 Apache 中完美运行,我认为是后者......

我还想指出,尽管更改了 display_errors INI 并使用了error_reporting(E_ALL),但没有显示或记录任何错误。简单地抛出一个 500 错误,并且脚本在该点之后停止执行。

【问题讨论】:

    标签: php iis-6


    【解决方案1】:

    事实证明,这是我在 contextifyToUser 中的一个函数之一,它假设一个变量是一个类,但在某些情况下它为 null。这在我的开发机器中没有发生,因为它使用了一组不同的输入数据。

    它。恨。 IIS。我仍然不确定为什么没有记录错误,也没有抛出异常或任何东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 2016-05-06
      • 2023-04-07
      • 2011-03-07
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多