IIS PHP 500错误

时间:2012-06-21 21:22:37

标签: php iis-6

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

问题是,该应用程序在Apache上运行良好。没有错误,警告或其他任何内容。

但是当我调用IIS服务器上的Utilities类的静态函数时,我收到500错误。问题是,函数永远不会调用 - 在函数开头放置一个“echo”什么都不做,这告诉我函数中的 代码不是问题。 ..该类的其他静态函数工作正常。

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

这是被调用的函数以及脚本停止执行的位置:

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

分隔json_encodegetArticlesInCollection表明它们都在工作并返回正确的值。正是“Contextify”功能杀死了它。

这是一个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错误并且脚本在该点之后停止执行。

1 个答案:

答案 0 :(得分:0)

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

它。讨厌。 IIS。我仍然不确定为什么没有记录任何错误,也没有例外或任何被抛出。