Назад | Перейти на главную страницу

Почему скрипт PHP загружается, а не выполняется

У меня есть локальный сервер 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 для нормальной работы.

Некоторые причины, по которым я обнаружил, что это происходит:

  • если php неправильно настроен на сервере
  • если файл не имеет правильного расширения .php
  • если он находится в каталоге, который не позволяет выполнение
  • если сценарий выполняется слишком долго.

Один тест, который я использую, - создать файл в том же каталоге (verify.php), который содержит:

<?php
  phpinfo();
?>

Если этот файл запускается в моем браузере, первые 3 пункта в порядке.

Я согласен с Эйвери, это обычная причина. Однако вы конкретно говорите, что это только иногда. Есть ли шанс, что вы меняете заголовок типа контента?

Обычная ошибка - напечатать что-то на странице до отправки заголовков.

Также обратите внимание, что если у вас есть файл .htaccess в той же папке, что и ваш php-скрипт, это может быть причиной некоторых проблем с выполнением.

Например, если вы получили копию файлов сайта с другого сервера, ваш файл htaccess может иметь такую ​​строку:

AddHandler x-httpd-php5-3 .php

Но на вашем реальном сервере вы можете использовать другую версию PHP. Так что это не исключение.