У меня есть локальный сервер LAMP на моем ноутбуке с Ubuntu для тестирования различных сценариев PHP.
Иногда, когда я делаю что-то не так, вместо того, чтобы получить сообщение об ошибке, предлагается загрузить тестируемый мной сценарий. Почему это так и как это исправить?
Сервер не распознает сценарий как что-то, что нужно выполнить локально, и вместо этого предлагает его в виде файла.
Эти строки должны присутствовать в вашей конфигурации Apache. Обратите внимание, что, возможно, потребуется изменить путь для модулей .so, в зависимости от вашей конфигурации:
# -- if you're using PHP 5, uncomment this line to activate it
#LoadModule php5_module libexec/libphp5.so
# -- if you're using PHP 4, uncomment this line to activate it
#LoadModule php4_module libexec/libphp4.so
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
Затем перезапустите службу Apache, и php должен загрузиться в Apache для нормальной работы.
Некоторые причины, по которым я обнаружил, что это происходит:
Один тест, который я использую, - создать файл в том же каталоге (verify.php), который содержит:
<?php
phpinfo();
?>
Если этот файл запускается в моем браузере, первые 3 пункта в порядке.
Я согласен с Эйвери, это обычная причина. Однако вы конкретно говорите, что это только иногда. Есть ли шанс, что вы меняете заголовок типа контента?
Обычная ошибка - напечатать что-то на странице до отправки заголовков.
Также обратите внимание, что если у вас есть файл .htaccess в той же папке, что и ваш php-скрипт, это может быть причиной некоторых проблем с выполнением.
Например, если вы получили копию файлов сайта с другого сервера, ваш файл htaccess может иметь такую строку:
AddHandler x-httpd-php5-3 .php
Но на вашем реальном сервере вы можете использовать другую версию PHP. Так что это не исключение.