Прочитайте файл .php с помощью php

#php

Вопрос:

Как прочитать файл .php с помощью php

Комментарии:

1. Вы можете просто include просмотреть файл, нет?

2. Почему вы не можете прочитать файл .php? с какой проблемой вы сталкиваетесь?

3. Я просто получаю пустую страницу при чтении файла *.php с помощью fgets

4. @Fred-ii — Извините, я не хочу включать файл. Я только что прочитал файл.

Ответ №1:

Допустим, у вас есть два файла a.php и b.php в одной папке.

Код в файле b.php

 <?php

echo "hi";

?>
 

и код на a.php

 <?php
$data = file_get_contents('b.php');
echo $data;
 

Вы получаете доступ a.php в браузере.

Что ты видишь? Пустая страница.

Пожалуйста, проверьте источник страницы прямо сейчас. Оно есть.

Но не отображается в браузере как <?php недопустимый html-тег. Таким образом, браузер не может правильно отобразить его, чтобы показать в качестве вывода.

 <?php
$data = htmlentities(file_get_contents('b.php'));
echo $data;
 

Теперь вы можете видеть вывод в браузере.

Ответ №2:

Если вы хотите получить контент, сгенерированный PHP, то

 $data = file_get_contents('http://host/path/file.php');
 

Если вы хотите получить исходный код PHP-файла, то

 $data = file_get_contents('path/file.php');
 

Помните, что file_get_contents() это не сработает, если ваш сервер *allow_url_fopen* выключен.

Комментарии:

1. Мне нужно получить контент, сгенерированный PHP, как в вашем первом примере, но без использования веб-сервера и HTTP-запросов. Есть идеи, как этого добиться?

2. Почему ты хочешь это сделать? Конечно, если у вас есть файл локально, вы можете напрямую открыть его и просмотреть содержимое. К вашему сведению, PHP работает на веб-сервере. Вы пытаетесь сделать то, что невозможно

3. Я хочу (написать тесты, которые) проверить, что контент, который я получаю по HTTP-запросу, именно такой, каким я его ожидаю. Очевидно, с динамическими обрабатываемыми деталями. Я не могу сравнить исходный файл с телом HTTP-ответа. Мне нужно сравнить обработанный вывод без использования HTTP с тем же, отправленным по HTTP. Вы также можете спросить, зачем мне это нужно. Короткий ответ: потому что мне нужно 😉 Более длинный: чтобы убедиться, что проблемы со сторонним промежуточным программным обеспечением за пределами моего домена не повторятся незамеченными.

Ответ №3:

 //get the real path of the file in folder if necessary
$path = realpath("/path/to/myfilename.php");

//read the file
$lines = file($path,FILE_IGNORE_NEW_LINES);
 

Каждая строка из ‘myfilename.php» будет сохранен в виде строки в массиве «$lines».
И затем вы можете использовать все строковые функции в php. Более подробная информация о доступных строковых функциях доступна здесь: http://www.php.net/manual/en/ref.strings.php