0

Stream Wrapperクラスを使用して 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()

次に、基本的に、アプリケーション全体で「編集require」または「編集」されたファイルを読み取ります。include次に、コードが挿入されphp://memory、それだけです。まだ特別なことは何もありません。

肝心なのは、このコードが機能するはずだということです。しかし、アプリケーションを実行しようとすると、内部サーバー エラーがスローされます。私のコードが現在ホストされている Linux ホスティング プロバイダー (PHP 5.4.21) があります。

しかし、コードを現在のホスティング会社から他の Linux ホスティング会社 (PHP 5.5.x) に移動すると、すべて正常に動作します。

コードをローカル コンピューター (PHP 5.4.6) に移動して実行すると、すべて正常に動作します。

明らかに、問題は私が現在持っているホスティング会社にあります. 私はそれらを郵送しなければならないことを知っています。しかし、何が問題を引き起こしているのか正確にはわかりません。せめて一定の方向性を示してくれればいいのに。私が今持っているのは

私のコードは、他のサーバーでは正常に動作しているサーバーでは動作しません

残念ながら、それは彼らにとって十分な情報ではありません。

php://memory256Mに設定されている制限を確認しました。それは十分すぎるはずです。そのため、他に何を探すべきかわかりません。Apache ログにも情報がありませんでした。

だから私は、ここにいる誰かがこの問題の原因を考えていることを望んでいました. おそらく、どこかまたは何かの許可の問題ですか?

4

0 に答える 0