Используйте php, чтобы прочитать исходный файл php. - PullRequest
1 голос
/ 01 марта 2012

Я пытаюсь использовать 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 в этом файле?

Ответы [ 6 ]

1 голос
/ 01 марта 2012

Как было сказано ранее, если вы попытаетесь прочитать файл через http-URL, запрос будет обработан веб-сервером на этом сервере, и он выполнит файл php.

Если файл находится на том же сервере, что и ваш php-код, попробуйте использовать относительный или абсолютный путь к файлу, например file_get_contents('/dir/dir/yourfile') или file_get_contents('dir/file.php').

1 голос
/ 01 марта 2012

К сожалению, приведенный выше код пытается выполнить код 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.

1 голос
/ 01 марта 2012

Если удаленный сервер не предоставит вам источник php-файла «как есть», вы никогда не получите его самостоятельно. Удаленный сервер ВСЕГДА (за исключением, конечно, ситуации с неправильной конфигурацией) запустит для него php engine и вернет вывод скрипта. Представьте, что произойдет, если вы сможете получить источник ЛЮБОГО удаленного php-файла.

0 голосов
/ 07 августа 2014

В моем случае я смог прочитать исходный файл php на моем сервере, используя htmlentities: $ Filedata = file_get_contents ('myfile.php');echo htmlentities ($ Filedata);

Но этот метод не работает для удаленных файлов.Может быть, зависит от конфигурации сервера (когда подается php), как указано выше.

0 голосов
/ 01 марта 2012

Вы не можете прочитать содержимое php-файла, используя URL-адрес, потому что если вы используете http: //, то он обрабатывается через ваш сервер apache, и apache выдает выходной файл php, а не содержимое.Если вы можете прочитать php-файл, используя http: //, тогда это проблема безопасности, и вы также можете прочитать содержимое файлов с другого сервера.Таким образом, ответ: вы не можете сделать это, просто так !!

В любом случае, если вы пытаетесь получить доступ к файлу php с другого сервера, который вам не принадлежит, это просто незаконно !!

0 голосов
/ 01 марта 2012

Когда вы запрашиваете удаленный файл, его обработка зависит от сервера на другом конце.Если удаленный хост сконфигурирован для выполнения файла PHP перед его обслуживанием, вы можете рассчитывать на возврат результата.

Если у вас есть сервер на другом конце, вы можете указать ему не анализировать .php файлы перед отправкой обратно.Для Apache вы, вероятно, захотите прочитать о mod_mime: http://httpd.apache.org/docs/2.0/mod/mod_mime.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...