PHP не работает в Apache2 после обновления системы


14

Недавно обновил мою систему с Karmic до Lucid. Я считаю, что это связано с обновлением Apache и PHP.

Теперь мой сервер не может обрабатывать файлы PHP, любая навигация по ним вызывает загрузку, а не анализ.

Модуль PHP по-прежнему загружен в Apache с включенными модами, и я AddType application/x-httpd-php .phpв моем httpd.conf.

Нет никаких значимых сообщений в доступе Apache или журналах ошибок, поэтому я в тупике.

Любая помощь будет оценена. Благодарю.

Ответы:


17

/var/log/apache2/error.log должна показать строку, подобную приведенной ниже, если PHP был успешно загружен:

[Вторник, 30 августа 12:53:36 2011] [примечание] Apache / 2.2.14 (Ubuntu) PHP / 5.3.2-1ubuntu4.9 с настроенным Suhosin-Patch - возобновление нормальной работы

Обратите внимание на дату, если это что-то из 2009 года, вы что-то неправильно настроили.

AddType бесполезно, вам нужно использовать:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Смотрите также инструкции по установке на php.net для Apache 2.x .

Вам не нужно добавлять это вручную, пакет libapache2-mod-php5установки /etc/apache2/mods-available/php5.confсодержит:

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Поскольку это conffile, возможно, он не установлен с обновлением. Чтобы исправить это, очистите его и затем установите снова:

sudo apt-get purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5

Чтобы включить PHP, вы должны запустить:

sudo a2enmod php5

Перезапустите веб-сервер после:

sudo /etc/init.d/apache2 restart

Другие вещи, чтобы сделать:

  • проверьте наличие конфликтующих настроек в /etc/apache2.
  • вы построили Apache из исходного кода?
  • Запустите, sudo apache2ctl configtestчтобы проверить вашу конфигурацию на наличие синтаксических ошибок
  • Откройте http: // localhost / server-info, чтобы проверить загруженную конфигурацию и модули. statusМодуль должен быть загружен для этого. Если вы используете удаленный сервер, вам нужно добавить себя в Allow fromсписок /etc/apache2/mods-enabled/status.confи перезапустить сервер после этого

Brilliant. АФК прямо сейчас, но проверю это сегодня вечером. Благодарю.
— Jivings

Очищенный и переустановленный, модуль загружен с включенной модой, но у меня все еще остается та же проблема ... Я не могу найти ничего, что могло бы быть конфликтующим, и включение для файлов conf определенно присутствует в apache.conf. У тебя есть другие идеи? Благодарю.
— Jivings

@Jivings: добавлены некоторые идеи по отладке
— Лекенштейн

Все еще не в состоянии понять это. Однако я обнаружил кое-что еще более любопытное. Кажется, что PHP работает нормально для одного из настроенных виртуальных хостов, хотя все, что он делает, это определяет documentRoot в / var / www. Как это возможно?!
— Jivings

1
Вам все еще нужно очистить кеш вашего браузера и перезапустить apache.
— Франческо

3

Ну, после того, как больше ничего не работало и Apache становился все более запутанным, я наконец просто удалил все пакеты Apache и переустановил их.

Кажется, сейчас работает нормально, кто знает, что с ним не так ....

РЕДАКТИРОВАТЬ

Я узнал, что было не так, когда снова настраивал параметры конфигурации Apache. [Эта запись в блоге] [1] объясняет это.

Оказывается, что хотя модуль userdir не используется активно, остальные файлы сайтов находятся в моей папке ~ / public_html, и php отключен для всего, что там есть.

Я предполагаю, что это, должно быть, недавнее дополнение к модулю php, которого не было в моих настройках Karmic.


1
Это должно быть связано с проблемой конфигурации. При обновлениях никакие файлы в /etcне копируются afaik (по крайней мере, у кого-то была проблема с тем, что он /etc/init.d/apache2не создается при переустановке, только при чистке + установке)
— Lekensteyn

Странно, что это работало до обновления моей системы, тогда ...
— Jivings

скорее всего, изменение функции тогда. Вы не можете ожидать, что каждое обновление будет соответствовать старым настройкам конфигурации. Некоторые модификации будут иметь смысл для большинства, но не для некоторых других.
— Лекенштейн

В самом деле. Спасибо за то, что помог мне разобраться с этим, очень признателен :)
— Jivings

1

В php5.confфайле /etc/apache2/mods-enabledвнизу есть несколько строк, которые не позволяют php выполняться внутри пользовательского каталога, поэтому в зависимости от вашей конфигурации это также может быть вашей проблемой. Вы можете просто закомментировать эти строки и перезагрузить apache2

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.