公開ページをリクエストするには、次のようにします。
$html = file_get_contents("http://mysite.com/file.php");
しかし、リクエストしたいファイルは公開ページではありません。サーバー構成に頼らずにリクエストする方法はありますか?
明確にするために、.php ファイルのソース コードは必要ありません。ファイル内で PHP を実行し、結果の html を文字列として取得したいのです。
公開ページをリクエストするには、次のようにします。
$html = file_get_contents("http://mysite.com/file.php");
しかし、リクエストしたいファイルは公開ページではありません。サーバー構成に頼らずにリクエストする方法はありますか?
明確にするために、.php ファイルのソース コードは必要ありません。ファイル内で PHP を実行し、結果の html を文字列として取得したいのです。
このようなコマンドライン呼び出しでphpファイルを呼び出すことができます
$content = shell_exec('php /path/to/your/file.php');
ファイルが一般公開されていない場合、最初に行うことは、パブリックがアクセスできない場所にファイルを配置することです。たとえば、サイトのパブリック フォルダーではなく、そこから 1 つ上のレベルに配置します。そうすれば、同じサーバーにあるファイルを除いて、誰もアクセスできなくなります。
file_get_contents()
次に、 を使用して URL をロードする代わりに、 を使用して次exec()
のように php スクリプトを実行します。
exec('php /path/to/file.php', $output);
print_r($output); // each line of the output is stored in the $output array
mroe 情報については、 http: //php.net/manual/en/function.exec.phpを参照してください。
しかし、リクエストしたいファイルは公開ページではありません。サーバー構成に頼らずにリクエストする方法はありますか?
外部ファイルの場合、いいえ、サーバー構成をバイパスする方法はありません。基本的file_get_contents()
に、PHP ファイルを指定することで、Web サーバーにそれを実行するように指示することになります。大量の情報を出力するように作成されている場合は、まさにそれを実行します。.htaccess パスワードで保護されたファイルにアクセスしようとしている場合は、CURL を選択することをお勧めします。
これは、ファイルを公開することで実行できますが、パスワードで保護します。その後、ページは引き続き外部から保護されますが、file_get_contents() で要求できます。
要求ページで:
$html = file_get_contents("http://mysite.com/file.php?password=h29kd8cm28x");
そして、リクエストされている(現在公開されている)ページでは:
if ($_GET['password'] != 'h29kd8cm28x') {
die("Access denied!");
} else {
// page contents here
}
ただし、これは扱いにくいソリューションのように思われ、ハッカーがパスワードを知るのを防ぐために追加の作業が必要です。
PHP ファイルをドキュメント ルートまたはそのサブフォルダーに保持する必要があります。run.php から call.php を呼び出しているとします。
// call.php
if($_SERVER['REQUEST_URI']=='run.php') { // Or the full path of run.php
// Code here
}
// run.php
$html = file_get_contents("http://sitename.com/call.php");
call.php がドキュメント ルートの外にある必要がある場合は、愚か者が述べたように、shell_exec がオプションです。