PHP не может читать файлы, содержащие код PHP, как текстовые файлы - PullRequest
3 голосов
/ 17 марта 2009

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

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

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

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

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

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

Ответы [ 6 ]

11 голосов
/ 17 марта 2009

Я понял. Я использовал 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
7 голосов
/ 17 марта 2009

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

0 голосов
/ 29 апреля 2015

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

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

0 голосов
/ 17 марта 2009

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

0 голосов
/ 17 марта 2009

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

0 голосов
/ 17 марта 2009

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

Редактировать: какую ошибку вы получаете точно?

...