2

curlPHPファイルのコンテンツを返すためにPHPで使用しています。同じスクリプトで複数の PHP ファイルにアクセスするため、これをローカルで実行したいので、ファイルを直接開く方が高速です。

ただし、取得時に追加の動的コンテンツを生成するスクリプトにパラメーターをプッシュしたいので、パラメーターを PHP ファイルにプッシュできるようにしたいと考えています (Web 上の PHP ファイルとまったく同じように扱いますが、ローカルで取得します)。それ。

ファイルをローカルで呼び出すと、これは可能ですか? file:/// を使用してファイルを直接呼び出してみましたが、これらのファイルにある PHP コードは実行されません。

何か案は?

編集

混乱して申し訳ありません: -これは現在 Web サーバーで実行されており、現在 http:// (file:/// ではなく) を呼び出しているため、これらのファイルに含まれている PHP を実行できます。ただし、本質的にサーバー自体を複数回呼び出す複数の curl() 呼び出しを生成しているため、これは遅いと思います。

4

2 に答える 2

5

次のようなトリックを行うことができます:

function php_to_string($php_file, $new_GET = false, $new_POST = false) {
    // replacing $_GET, $_POST if necessary
    if($new_GET) {
        $old_GET = $_GET;            
        $_GET = $new_GET;
    }
    if($new_POST) {
        $old_POST = $_POST;            
        $_POST = $new_POST;
    }
    ob_start();
    include($php_file);
    // restoring $_GET, $_POST if necessary
    if(isset($old_GET)) {
       $_GET = $old_GET;
    }
    if(isset($old_POST)) {
       $_POST = $old_POST;
    }
    return ob_get_clean();
}

$content = php_to_string('my_file.php');
$content = php_to_string('my_file.php', Array('id'=>23)); // http://localhost/my_fie.php?id=23

ただし、既存の変数が上書きされ、バグ (定義の重複など) が発生する可能性があることに注意してください。そのため、サンドボックス ソリューションを使用できます。

于 2013-01-23T20:36:50.920 に答える
1

ローカル マシンに Web サーバー (Apache など) をセットアップして、http://localhost/script.php?param1=foo&param2=bar代わりにfile:///path/to/script.php. 違いは、実行するfile:///とファイルが開かれるだけですが、Apache を使用するとスクリプトが実際に実行されることです。

スクリプトに引数を渡す場合は、クエリ文字列を使用します (例:?param1=fooなど)。

なぜあなたがしていることをしているのかわかりませんが、それがあなたの助けになることを願っています.

于 2013-01-23T20:33:35.427 に答える