6

基本的に、ヘッダーX-Sendfileをブラウザーに送信してファイルを送信したいのですが、X-Sendfileが使用できないか、サーバーにインストールされていない場合は、これを呼び出したくありません。PHPでこれを確認するにはどうすればよいですか?または、これがPHPでチェックできない場合は、PERIODがインストールされていることを確認する方法よりも?PHPにX-Sendfileが存在するかどうかを確認したいのですが、これは他のサイトやサーバーでも実行されるパッケージの一部であるため、確認するのが簡単です。 PHPheader関数を使用すると、インストールされていない場合は何かが返されますか?

みんなありがとう :)

4

4 に答える 4

6

APACHEモジュールmod_xsendfileX-Sendfileはヘッダーを処理します

APACHEモジュールmod_xsendfileが使用可能であり、サーバーにインストールされているかどうかを確認するには、apache_get_modules()関数を使用できます。

ヘッダーを設定して、モジュールがインストールされているかどうかを確認することはできません。

于 2012-09-02T04:35:20.500 に答える
1

apacheモジュールのリストを取得し、x-sendfileがリストに含まれているかどうかを確認するには、http://php.net/manual/en/function.apache-get-modules.phpを使用できます。 インストールされていない場合は、x-sendfileインストールされている場合、ヘッダーはブラウザに到達し、モジュールはヘッダーを除外します。

于 2012-09-02T04:35:21.883 に答える
0

これを試して:

    if (in_array('mod_xsendfile', apache_get_modules())) {
        header("X-Sendfile: $file");
    } else {
        error_log("Warning! mod-xsendfile is NOT INSTALLED - sending file the old fashion way.....");
        header('Content-Length: ' . filesize($file) );
        print file_get_contents($file);
    }
于 2012-09-02T07:51:42.883 に答える
0

これは正しくありません。XSendFileが関連する場所でOnに設定されていないが、モジュールがロードされている場合、xsendfileの使用は利用可能であると誤って想定しますが、利用できません。

于 2013-05-13T17:46:04.217 に答える