PHP не может читать файлы, содержащие код PHP, в виде текстовых файлов.

StackOverflow https://stackoverflow.com/questions/654688

Вопрос

Я наткнулся на следующую особенность:

$handle = fopen(realpath("../folder/files.php"), "r");

Не могу прочитать файл, но как только я удаляю теги PHP из файла, он становится читаемым, и мои скрипты печатают непутное содержимое файла на странице.Кроме того, file.php никогда не выполняется, поэтому мне интересно, в чем проблема.

Я предполагаю, что Apache или PHP почему-то не позволяют читать файлы, содержащие теги PHP, как просто текст.

Как я могу включить его для моего конкретного файла (конечно, делать это глобально было бы небезопасно)?

Использование PHP 5.2.x и Apache 2.0.

Это было полезно?

Решение

Я понял.Я использовал Google Chrome для отладки страницы и понял, что при просмотре исходного кода Chrome по какой-то причине скрывает теги PHP.Я провёл тот же тест на Firefox, и просмотр исходного кода показал, что всё в порядке.

Вот подробности теста:

Код:

$fh = fopen("test.php","r");
while ($line = fgets($fh)){
echo $line;
}

Файл для чтения (test.php):

testing <?php testing2 ?> testing3

Рендеринг (как в Chrome, так и в Firefox):

testing  testing3

Посмотреть источник (с помощью Firefox):

testing <?php testing2 ?> testing3

Посмотреть источник (с использованием Chrome – источник моей ошибки):

testing  testing3

Другие советы

Вы уверены, что правильно интерпретируете вывод? Если вы распечатываете содержимое файла непосредственно на страницу вывода, браузер не будет отображать текст в угловых скобках, потому что он думает, что это тег. Подайте ваш контент как text/plain или используйте & Quot; просмотреть исходный код & Quot; команда, чтобы убедиться, что вы смотрите на то, что на самом деле там, а не только то, что браузер выбрал для отображения.

Хм, file_get_contents () работает для меня. Это проблема только для fopen?

Изменить: какую ошибку вы получаете точно?

Вадих М. решил проблему. Теги PHP скрывают весь вывод php исходного кода в браузере, но View Source показывает их. Спасибо!

Я использую htmlspecialchars($line);

Это решило проблему.

переименовать файл прочитай это получить ваши данные изменить их переименуйте ваш файл:)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top