2

別のphpファイルのソースを読み取るためにphpを使用しようとしています。次の方法で file_get_contents を使用しようとしています

file_get_contents('http://www.example.com/someFile.php');

残念ながら、上記のコードは、他のファイルの場合のようにテキストを読み取るだけでなく、php コードを実行しようとします。

この問題に対処しているように見える記事に出くわしたため、次のコードにたどり着きました。

file_get_contents('php://filter/convert.base64-encode/resource=http://www.example.com/someFile.php');

ただし、このコードには同じ効果があります。php コードの実行を試みます。

ファイル内のphpを実行しようとせずに、phpを使用して別のphpファイルのソースを読み取るにはどうすればよいですか?

4

6 に答える 6

1

残念ながら、上記のコードは、他のファイルの場合のようにテキストを読み取るだけでなく、php コードを実行しようとします。

いいえ、そうではありません。

ここで起こっていることは、file_get_contentsが に対して通常の HTTP リクエストを作成しhttp://www.example.com/someFile.php、「example.com」のリモートサーバーが PHP コードを解釈していることです。http://www.example.com/someFile.phpブラウザでナビゲートした場合とまったく同じように結果が表示されます。スクリプトはその出力をダウンロードしています。

file_get_contentsファイルを取得した後、ファイルの内容を実行しないことは間違いありません。スクリプトが "someFile.php" にアクセスできるのは、リモート サーバーが喜んで提供するものだけです。file_get_contentsブラウザでPHPソースを表示できる以上に、基礎となるPHPソースを取得することはできません。

于 2012-03-01T00:21:52.843 に答える
1

リモートサーバーがphpファイルのソースを「そのまま」提供しない場合、自分で取得することはできません。リモートサーバーは常に(もちろん、設定が間違っている場合を除いて)、それに対してphpエンジンを実行し、スクリプトの出力を返します。任意のリモート php ファイルのソースを取得できるとしたらどうなるか想像してみてください。

于 2012-03-01T00:21:06.177 に答える
1

前に述べたように、http url を介してファイルを読み取ろうとすると、そのサーバー上の Web サーバーによって要求が処理され、php ファイルが実行されます。

file_get_contents('/dir/dir/yourfile')ファイルが PHP コードと同じサーバー上にある場合は、またはなどの相対または絶対ファイルパスを使用してみてくださいfile_get_contents('dir/file.php')

于 2012-03-01T00:24:22.820 に答える
0

私の場合、htmlentities を使用して、サーバー内のファイルの php ソースを読み取ることができました。echo htmlentities($Filedata);

ただし、この方法はリモート ファイルでは機能しません。上記のように、サーバー構成(phpが提供されている場合)に依存する可能性があります。

于 2014-08-07T01:06:09.597 に答える
0

リモート ファイルを要求するとき、それがどのようにレンダリングされるかは、相手側のサーバー次第です。リモート ホストが PHP ファイルを提供する前に実行するように構成されている場合は、出力が提供されることを期待できます。

相手側のサーバーを所有している場合は、.phpファイルを送り返す前にファイルを解析しないように指示できます。Apache については、おそらく以下を参照してくださいmod_mime: http://httpd.apache.org/docs/2.0/mod/mod_mime.html

于 2012-03-01T00:22:43.230 に答える
-1

URL を使用して php ファイルの内容を読み取ることはできません。http:// を使用している場合、それは apache サーバーを介して処理され、apache は内容ではなく php ファイルの出力を提供するためです。http:// を使用して php ファイルを読み取ることができる場合、セキュリティ上の問題があり、他のサーバーからファイルの内容を読み取ることもできます。答えは、あなたにはできないということです。

万が一、あなたが所有していない他のサーバーからphpファイルにアクセスしようとしている場合、それは単純な違法です!!

于 2012-03-01T00:25:00.390 に答える