2012-03-01 16 views
1

私は、別のphpファイルのソースを読むためにphpを使用しようとしています。私は次のように残念ながらphpを使ってphpファイルのソースを読む

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

、むしろそれは、他のファイルと同じように、単にテキストを読むよりも、PHPのコードを実行しようとする上記のコードをのfile_get_contentsを使用しようとしています。

私は、次のコードに私を導いた問題に対処するために表示されるan articleに出くわした:

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

しかしこのコードは同じ効果があります。それはPHPコードを実行しようとします。

私はファイル内のphpを実行しようとせずに別のphpファイルのソースを読むためにphpを使用することはできますか?

答えて

1

残念ながら、上記のコードは、他のファイルと同じようにテキストを読み込むのではなく、PHPコードを実行しようとしています。

いいえ、そうではありません。ここで何が起こっている

file_get_contentshttp://www.example.com/someFile.phpのための通常のHTTP要求を行い、「example.com」でリモートサーバーは、PHPコードを解釈していることです。あなたのブラウザでhttp://www.example.com/someFile.phpにナビゲートしたのとまったく同じ結果が得られます。あなたのスクリプトはその出力をダウンロードしています。

file_get_contents最も確実にではありません。は、ファイルを取得した後にファイルの内容を実行します。あなたのスクリプトが "someFile.php"に持っている唯一のアクセスは、リモートサーバが提供するものです。 file_get_contentsは、何らかの形でPHPのソースをブラウザに表示させることができます。

1

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

+0

十分に適切です。しかし、ファイルが同じサーバー上にある場合はどうなりますか?あるいは同じディレクトリにいても?すなわち、file_get_contents( 'http://localhost/someFile.php'); –

+1

@ MarkBrownそれは問題ではありません。 localhostへの/からのリクエストでphpを実行しないようにサーバを設定する必要があります。 HTTPリクエスト(ファイルシステムへの直接リクエストではなく)を実行するとき、サーバーはPHPスクリプトを実行する必要があります。これはサーバーの目的です。 – Cheery

+1

@MarkBrownそれでも、webserver/PHPインタプリタを介してファイルを読み込んでいます。ファイルがローカルの場合、* url *ではなく* file *として読み取る必要があります。 – meagar

0

リモートファイルを要求すると、レンダリング方法は相手側のサーバーによって異なります。リモートホストが提供する前にPHPファイルを実行するように設定されている場合は、出力を返すことが期待できます。

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

1

を読んでみてください。これまで述べたように、http urlでファイルを読み取ろうとすると、要求はそのサーバー上のWebサーバーによって処理され、それはPHPファイルを実行します。

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

-1

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

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

+0

Um ...公開Webサーバー上のPHPファイルにアクセスするにはどうしたらよいですか? – meagar

+0

あなたの重要なPHPスクリプトにアクセスして閲覧することは合法ですか?あなたのlogin.phpコードを見るためにfile_get_contents()を使用すれば幸せになれますか? – Deepak

+0

この質問の全体的なポイントは、あなたがそれを行うことができないということです。これは法的な制限ではなく、技術的なものです。 'file_get_contents'は魔法のようにWebサイトを生成するPHPソースコードを見ることができません。また、 'login.php'ファイルに機密情報が含まれていると、恐ろしいソフトウェアを書いています。 – meagar

0

私の場合、私はhtmlentitiesを使って私のサーバのファイルのPHPソースを読むことができました: $ Filedata = file_get_contents( 'myfile.php'); echo htmlentities($ Filedata);

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

関連する問題