- Не запускается apache 2.2 после обновления PHP. Как исправить?
- Параметры php_value, php_flag и ошибка 500
- Причина ошибки 500 от php_value, php_flag
- Исправление ошибки 500 от php_value, php_flag
- Подробней об установке модуля mod_php
- Об удалении параметров php_value, php_flag
- О синтаксисе параметров php_value, php_flag
- php_admin_value и php_admin_flag в .htaccess
Не запускается apache 2.2 после обновления PHP. Как исправить?
После обновления php на старой freebsd 8 не получается запустить apache. После поиска ошибки стало понятно, что apache не подгружает php как модуль. Я сам не сисадмин и сервер этот настраивал лет 5 назад так, что там работала связка php+nginx+apache.
После долгих мучений настроить php+nginx у меня не получается, вот и решил попробовать по старинке php+apache.
Как запустить apache?
Invalid command 'php_admin_value', perhaps misspelled or defined by a module not included in the server configuration
________________
Решено:
Обновить апач и поставить из портов mod_php55, чтобы все работало вместе.
Не каждая версия php совместима не с каждой версией Apache.
Надо смотреть, какая библиотека php подходит под твой апач, возможно нужно или подставить нужную библиотеку или обновлять сам apache.
Именно поэтому сейчас чаще пользуются готовыми LAMP и не ставят все отдельно
Тут вопрос решили апгрейдом apache с 2.2 до 2.4
Сергей: Зачем вы человеку обсуждение виндового апача с php даете? Там явно специфично-виндовая проблема с несовместимостью. В FreeBSD такой проблемы нет. Человек просто собрал новый PHP, который, кстати, нормально совместим с apache-2.2.
Александр А: Тем, что по ссылке на StackOverFlow человек пытается воткнуть в apache-2.2 библиотеку от apache-2.4. Это я ее имел ввиду специфической, если что.
И решение апгрейдом виндового апача с виндовым PHP слабо кореллирует с данным топиком, в котором упомянут FreeBSD 8.
Господа, по не подтвержденной информации : «Как оказалось, язык php5 больше не ставится самостоятельно, как модуль для apache22. Чтобы включить возможность их совместного использования, теперь необходимо установить отдельно модуль mod_php55. «. Так что апргейд апача врятли поможет. Сейчас даже не получается скомпилить php
libtool: link: cannot find the library `/usr/local/lib/libiconv.la' or unhandled argument `/usr/local/lib/libiconv.la' *** Error code 1
Vincent1: Ну так установите libiconv, какие проблемы? Вообще, 8-ая фря — уже достаточно старая, и если никаких сервисов на этот сервер больше не завязано, я бы рекомендовал установить начисто 10-ку. Ну и пользоваться потом правильными инструментами — периодически делать portsnap fetch update, порты обновлять через portupgrade, и всё такое 🙂
Vincent1: А вообще, в вашем случае я бы загуглил конкретно вашу ошибку — php_admin_value — видимо чего-то не хватает в самом php. Можно попробовать доустановить libapache2-mod-php5
Например как это указано тут www.ehcp.net/?q=node/544
Опять же, надо посмотреть как у вас установлен php.
Возможно действительно проще будет все снести и поставить LAMP, в котором зависимости прописаны нормально
Сергей: да причем тут LAMP? Вы привели ссылку на StackOverFlow, где обсуждается проблема на винде. Я и ответил именно на этот Ваш комментарий.
А у топикстартера вообще FreeBSD, он уже сам докопался до того, что надо подсобрать mod_php5, который с некоторого времени собирается из портов отдельно от основного порта php5 и ссылки даже на LAMP ему не сильно помогут (ну нет aptitude и apt и yum в FreeBSD).
Переставить — да, поможет, но вопрос был в том, как починить имеющееся, а не убить и восстановить.
У тебя (ничего, что на «ты»), скорее всего не включен модуль libphp5.so в httpd.conf (ну или в одном из конфигов).
Обычно, если apache22, в конфиге /usr/local/etc/apache22/httpd.conf примерно на 75 строке должно быть такое:
LoadModule php5_module libexec/apache22/libphp5.so
рядом с другими LoadModule. Либо в одном из конфиг-файлов.
При деинсталляции php (и про portupgrade) эта строка удаляется, а обратно, возможно, не воткнулась.
Ах если бы я проводил обновление через portupgrade. Такой строки ‘LoadModule php5_module’ в моем httpd.conf нет, точно так же как и каких-нибудь модулей с названием похожим на php5 в libexec/apache22/.
Что собственно и вводит меня в ступор.
Ну, значит включи модуль. Строку я тебе привел 🙂 Рядом с другими LoadModule поставь. Пока не попробуешь — чуда не произойдет 🙂
httpd: Syntax error on line 118 of /usr/local/etc/apache22/httpd.conf: Cannot load /usr/local/libexec/apache22/libphp5.so into server: Cannot open «/usr/local/libexec/apache22/libphp5.so»
Vincent1: ОК, в /usr/local/libexec/apache22/ вообще есть какой-либо файл, напоминающий libphp5.so?
Если нет — поясни, как ты собирал новый php?
cd /usr/ports/lang/php5/ make config-recursive && make install clean cd /usr/ports/lang/php5-extensions/ make config-recursive && make install clean
Почему библиотеки не в папке я узнал, но не проверил еще (Как оказалось, язык php5 больше не ставится самостоятельно, как модуль для apache22. Чтобы включить возможность их совместного использования, теперь необходимо установить отдельно модуль mod_php55.).
И теперь не могу установить php — пишет
libtool: link: cannot find the library `/usr/local/lib/libiconv.la' or unhandled argument `/usr/local/lib/libiconv.la' *** Error code 1
Параметры php_value, php_flag и ошибка 500
При запуске некоторых CMS и скриптов на части хостингов или своем VDS (сервере) на месте сайта может появиться ошибка 500 Internal Server Error. В этой статье мы разберем самую частую причину этой ошибки — параметры php_value и php_flag, указанные в файле .htaccess.
Причина ошибки 500 от php_value, php_flag
Основной причиной появления ошибки 500 на месте сайта при использовании параметров php_value и php_flag в файле .htaccess является отсутствие модуля PHP в загруженных модулях Apache.
Также к ошибке может привести неверный синтаксис данного параметра, например, если Вы указали синтаксис от php.ini — «memory_limit=64M» (php_value memory_limit=64M).
Ошибку могут вызвать и параметры php_admin_value и php_admin_flag, которые нельзя использовать в файле .htaccess.
Исправление ошибки 500 от php_value, php_flag
В том случае, если ошибку Internal Server Error вызвало отсутствие модуля mod_php, есть два варианта решения проблемы: установка данного модуля или удаление параметров php_value, php_flag из .htaccess.
Подробней об установке модуля mod_php
Если Вы используете контейнер, VDS или Dedicated сервер, то для решения проблемы Вы можете просто установить модуль PHP на веб-сервер Apache, что несколько сложнее, чем удалить параметры из .htaccess.
При использовании виртуального хостинга модуль PHP не получится установить, поэтому здесь сразу нужно переходить ко второму варианту решения проблемы…
Об удалении параметров php_value, php_flag
Удалить параметры из файла .htaccess можно тремя способами:
Добавить параметр Ifmodule в файл .htaccess. Данный способ позволит веб-серверу Apache игнорировать настройки php_value и php_flag. Синтаксис в .htaccess в этом случае будет выглядеть следующим образом:
Также стоит добавить еще одну секцию для PHP 7:
Это позволит автоматически активировать эти параметры при смене конфигурации VDS, выделенного сервера или переезде на другой хостинг в том случае, если там будет установлен как PHP 5, так и PHP 7 в качестве модуля Apache.
Закомментировать php_value, php_flag в .htaccess. Для комментирования данных параметров в файле .htaccess используется символ «#», который указывается в начале каждой строки.
Просто убрать php_value, php_flag из .htaccess. Вы можете просто стереть все строки php_value и php_flag из .htaccess.
Обращаем Ваше внимание, что мы рекомендуем использовать только первые два способа удаления параметров из .htaccess, что позволяет сохранить параметры в файле и избежать их утери, так как эти параметры понадобятся для дальнейшего использования.
О синтаксисе параметров php_value, php_flag
Также для исправления ошибки 500 Internal Server Error мы рекомендуем проверить синтаксис параметров, который должен иметь вид:
При указании синтаксиса для php.ini:
веб-сервер Apache выдаст ошибку.
php_admin_value и php_admin_flag в .htaccess
Параметры php_admin_value и php_admin_flag нельзя использовать в файле .htaccess, поэтому исправить ошибку 500 можно только удалением этих параметров.