file_get_contents
URL を指定してリモート サーバー上のファイルを編集しようとしている場合を除き、PHP コードは実行されません。その場合、リモート サーバーから取得するのは、ソースではなく、実行された PHP コードになります。
ローカル ファイルを編集するか、特定の PHP ファイルのコードを送り返す「バックドア」を提供する必要があります。これはセキュリティ違反であるため、注意してください。だれでも PHP のソース コードを読み取る可能性があります。
これを回避する方法は、ファイルが特定のディレクトリにある場合にのみ、ファイルの提供を受け入れることです。もう1つは、ファイルの内容を確認することです。
<?php
// This file will read any local PHP file (or any file of any kind,
// returning it as text), provided they contain a written agreement
// to be read.
if (!isset($_REQUEST['file']))
die("ERROR: no file supplied");
$path = $_REQUEST['file'];
if (!is_readable($path))
die("ERROR: file is not readable");
$content = file_get_contents($path);
if (false === strpos($content, "IT IS OK TO READ THIS FILE AS SOURCE"))
die("ERROR: this file is not authorized");
if (false !== strpos($content, "IT IS NOT OK TO READ THIS FILE AS SOURCE"))
die("ERROR: this file is not authorized");
Header("Content-Type: text/plain");
Header("Content-Length: " . strlen($content));
die($content);
?>
ファイルを読み取れるようにするには、ファイル自体に次のような宣言が含まれている必要があります。
// IT IS OK TO READ THIS FILE AS SOURCE
また、反対の意味の宣言を含めてはなりません。