Код в index.php
<?php echo readfile('hello.php'); ?>
код в hello.php
<?php echo "hello this is a php file"; ?>
Выход, который я получаю, равен 47
но когда я добавляю строку перед строкой в hello.php, т.е. echo "<br/> hello this is a php file";
Я получаю выходные hello this is a php file"; ?>52
И при удалении закрывающего тега php в файле hello.php в index.php есть
hello this is a php file"; 50
Но в текстовом файле такого поведения нет. Почему вывод index.php является тремя разными способами при чтении php-файла?
Это происходит из-за readfile
что вы readfile
на экране. echo readfile()
. После readfile
, readfile
возвращает количество байтов, которое он читает, так что вот откуда 47
.
Вы можете просто сделать:
readfile('hello.php');
или вы можете использовать
echo file_get_contents('hello.php');
если вы выберете.
Кроме того, я предлагаю вам проверить источник своей страницы в своем браузере (ознакомьтесь с документами своего браузера). Скорее всего, вы увидите там файл PHP. Вероятно, ваш браузер пытается отобразить ответ в виде HTML-файла. Он пытается проанализировать <?php
как HTML-тег. Вот почему он не отображается.
Чтобы обойти это, вы можете попробовать добавить
header('Content-type: text/plain');
перед тем как вы эхо отошлите свой файл hello.php на экран. Это должно сообщить браузеру, что он получает только текстовый файл и не пытается проанализировать его как HTML.
Поведение для php-файла такое же, как и в других файлах. Если вы перейдете к источнику страницы, вы увидите <?php
.