流包装器和写入php://memory 导致内部服务器错误500

流包装器和写入php://memory 导致内部服务器错误500,php,linux,stream-wrapper,php-stream-wrappers,Php,Linux,Stream Wrapper,Php Stream Wrappers,我正试图使用该类在PHP中编写一个自定义包装器。我现在所说的非常简单和直接 class Stream { public $resource; public static function wrap() { stream_wrapper_unregister(self::PROTOCOL); stream_wrapper_register(self::PROTOCOL, __CLASS__); } public stati

我正试图使用该类在PHP中编写一个自定义包装器。我现在所说的非常简单和直接

class Stream
{
    public $resource;

    public static function wrap()
    {
        stream_wrapper_unregister(self::PROTOCOL);
        stream_wrapper_register(self::PROTOCOL, __CLASS__);
    }

    public static function unwrap ( )
    {
        stream_wrapper_restore(self::PROTOCOL);
    }

    public function stream_open ( $path, $mode, $options, &$openedPath )
    {
        $this->unwrap();

        // Open memory
        $this->resource = fopen('php://memory', 'rb+');
        $code = file_get_contents ( $path );

        // Write code to memory
        fwrite($this->resource, $code);
        rewind($this->resource);

        $this->wrap();

        return $this->resource !== false;
    }

    // Left out the other methods that the stream wrapper needs 
    // to keep this example simple
    // ...
}
在代码的开头,我通过调用打开流:
stream::wrap()

然后,它基本上读取整个应用程序中
需要
'ed或
包含
'ed的任何文件。然后将代码放入
php://memory
就这样。还没什么特别的

底线是,这段代码应该可以工作。但当我尝试运行应用程序时,它会抛出一个内部服务器错误。我有一个Linux托管提供程序(PHP5.4.21),我的代码当前托管在这里

但是,当我将代码从当前宿主移动到其他Linux托管公司(PHP5.5.x)时,一切都正常

当我甚至将代码移动到本地计算机(PHP5.4.6)并运行它时,一切都正常

所以很明显,问题在于我目前拥有的托管公司。我知道我必须把它们寄出去。但我不知道到底是什么导致了这个问题。如果我至少能给他们指明一个方向,那就太好了。我现在所拥有的只是

我的代码在您的服务器上不起作用,在某些服务器上运行良好 其他服务器

我担心这对他们来说还不够

我已经检查了
php://memory
设置为256M的限制。这应该足够了。所以我不知道还能找什么。Apache日志也没有任何信息


所以我希望这里的任何人都知道是什么导致了这个问题。可能是某个地方或某个地方出现了权限问题?

请查看web服务器错误日志,了解php的问题所在。500错误是从web服务器发送的,不是php。@JonathanKuhn web服务器日志是Apache日志,对吗?这就是为什么我说我已经检查过了:)错误日志似乎是空的。因此,我将不得不联系我的主机,因为它没有任何错误似乎奇怪。