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

14

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

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

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

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

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

Jivings
источник

Ответы:

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и перезапустить сервер после этого
Lekensteyn
источник
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.

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

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

Джефф
источник