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.