Код в 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 .
