#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