PHP не працює в Apache2 після оновлення системи


14

Нещодавно оновив мою систему від Карміка до Люцида. Це стосується оновлення 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та після цього перезапустити сервер

Блискуча. АФК зараз, але перевіримо це сьогодні ввечері. Спасибі.
Jivings

Очищений та перевстановлений, модуль завантажується увімкнено модами, але у мене все одно виникає проблема ... Я не можу знайти нічого, що могло б бути конфліктним, і включення для конф-файлів, безумовно, присутнє в apache.conf. Чи є у вас інші ідеї? Спасибі.
Стрибки

@ Jivings: додано кілька ідей для налагодження
Lekensteyn

Ще не в змозі це зрозуміти. Однак я виявив щось ще цікавіше. Здається, що PHP працює добре для одного з встановлених віртуальних хостів, хоча все, що він робить, - це визначити documentRoot в / var / www. Як це можливо?!
Стрибки

1
Вам все одно доведеться очистити кеш браузера та перезапустити апаш.
Франческо

3

Ну після того, як нічого іншого не працювало, і Apache дуже заплутався, я нарешті просто очистив усі пакети Apache і перевстановив їх.

Здається, зараз добре працює, хто знає, що з цим було не так ...

EDIT

Я дізнався, що було не так, коли я знову налаштовував свої настройки конфігурації Apache. [Цей запис у блозі] [1] пояснює це.

Виявляється, хоча модуль userdir активно не використовується, решта файлів сайтів перебувають у моїй папці ~ / public_html, а php вимкнено для всього, що там є.

Я думаю, це, напевно, було недавним доповненням до модуля php, який не був у моїх кармічних настройках.


1
Це має бути пов'язано з проблемою конфігурації. Під час оновлення жодних файлів у файлі /etcне копіюється afaik (принаймні, у когось виникли проблеми з тим, що він /etc/init.d/apache2не створюється при перевстановці, лише при
чищенні

Дивно, що він працював до моєї оновлення системи тоді ...
Схід

ймовірно, тоді зміниться функція. Ви не можете очікувати, що кожне оновлення поважатиме старі настройки конфігурації. Деякі модифікації мали б сенс для більшості, але не для інших.
Лекенштейн

Справді. Дякую за те, що допомогли мені дістатись до цього місця, дуже вдячний :)
Jivings

1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.