Ошибка сегментации apache 2.2 php5_module доморощенного Mac

Я перенес свою реализацию apache со встроенного apache Mac на apache, установленный с доморощенным. Все шло гладко, но когда я пошел тестировать свой сайт на PHP, стало ясно, что PHP не работает (сам apache работал и обслуживал HTML, но PHP просто находился в исходном коде в виде простого текста).

Я понял, что еще не включил apache php5_module Homebrew в apache, поэтому я добавил:

LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

В мой файл httpd.conf. Я перезапустил apache, и тут все стало ДЕЙСТВИТЕЛЬНО интересным:

$ sudo apachectl graceful
httpd not running, trying to start
(48)Address already in use: make_sock: could not bind to address [::]:80
/usr/local/bin/apachectl: line 78: 77225 Segmentation fault: 11  $HTTPD -k $ARGV

После этого мой тестовый сайт полностью исчез, комментирование строки php5_module возвращает HTML-страницу, но, очевидно, без работающего PHP. Кто-нибудь знает, как это может произойти или как это исправить? Я видел несколько ссылок на ошибку mod_perl, но у меня она не включена. (Я также понятия не имею, как проблема с портом может быть связана с этим.)

Кроме того, изменение пути к mod_php5 на libexec/apache2/libphp5.so было столь же неэффективным.

$ sudo apachectl graceful
httpd: Syntax error on line 117 of /usr/local/etc/apache2/2.2/httpd.conf: Cannot load /usr/local/opt/httpd22/libexec/apache2/libphp5.so into server: dlopen(/usr/local/opt/httpd22/libexec/apache2/libphp5.so, 10): image not found

Некоторые технические подробности:

Версия Mac OS: 10.9.5

Установка апач2.2: brew install -v httpd22 --with-brewed-openssl

Установка PHP:brew install -v php54 --homebrew-apxs --with-apache

Модули загружаемые apache:

$ sudo apachectl -M
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 authn_file_module (shared)
 authn_dbm_module (shared)
 authn_anon_module (shared)
 authn_dbd_module (shared)
 authn_default_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_dbm_module (shared)
 authz_owner_module (shared)
 authz_default_module (shared)
 auth_basic_module (shared)
 auth_digest_module (shared)
 cache_module (shared)
 dbd_module (shared)
 dumpio_module (shared)
 reqtimeout_module (shared)
 ext_filter_module (shared)
 include_module (shared)
 filter_module (shared)
 substitute_module (shared)
 deflate_module (shared)
 log_config_module (shared)
 log_forensic_module (shared)
 logio_module (shared)
 env_module (shared)
 mime_magic_module (shared)
 cern_meta_module (shared)
 expires_module (shared)
 headers_module (shared)
 ident_module (shared)
 usertrack_module (shared)
 unique_id_module (shared)
 setenvif_module (shared)
 version_module (shared)
 proxy_module (shared)
 proxy_connect_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module (shared)
 proxy_scgi_module (shared)
 proxy_ajp_module (shared)
 proxy_balancer_module (shared)
 ssl_module (shared)
 mime_module (shared)
 dav_module (shared)
 status_module (shared)
 autoindex_module (shared)
 asis_module (shared)
 info_module (shared)
 suexec_module (shared)
 cgi_module (shared)
 cgid_module (shared)
 dav_fs_module (shared)
 vhost_alias_module (shared)
 negotiation_module (shared)
 dir_module (shared)
 imagemap_module (shared)
 actions_module (shared)
 speling_module (shared)
 userdir_module (shared)
 alias_module (shared)
 rewrite_module (shared)
 php5_module (shared)
Syntax OK

Версия апача:

$ apachectl -v
Server version: Apache/2.2.29 (Unix)
Server built:   Feb 22 2015 18:17:03

Я могу предоставить дополнительную информацию, если есть что-то полезное (я был бы признателен за инструкции о том, как найти эту информацию, мой Mac apache foo не силен ...) Спасибо, ребята!

ОБНОВЛЕНИЕ:

Существующие пути к файлам:

  • /usr/local/opt/php54/libexec/apache2/libphp5.so

Пути к несуществующим файлам:

  • /usr/local/opt/httpd22/libexec/mod_php54.so
  • /usr/local/opt/httpd22/libexec/libphp5.so

person lostphilosopher    schedule 26.02.2015    source источник
comment
Вы, вероятно, работали над этим какое-то время, но я просто использую Mamp и занимаюсь своими делами. Он работает из коробки и делает жизнь намного проще.   -  person Halfstop    schedule 26.02.2015
comment
Ага... Я, наверное, к этому иду... В дистрибутивах Linux всегда все было так гладко...   -  person lostphilosopher    schedule 26.02.2015
comment
Это кошмар на Mac для настройки. На моих серверах Debian это ничего. На Mac вы можете провести весь день, и он все равно не заработает.   -  person Halfstop    schedule 26.02.2015
comment
Странно, у меня никогда не было проблем с Macports, и я никогда не видел этой проблемы от коллег, использующих Brew. У меня сложилось впечатление, что доморощенный добавит модуль в конфиг как часть установки. Вы уверены, что у вас не было 2 директив модуля php, и поэтому это было ошибкой? Возможно, вместо этого вы просто пропустили директивы обработчика.   -  person prodigitalson    schedule 26.02.2015
comment
@prodigitalson: Я пробую это с Brew в основном в качестве эксперимента. Я уверен, что это просто вопрос смешивания моего мышления Brew/Mac по умолчанию/Linux... Ха-ха. Но нет, дубликата нет. Я обновлю пост с еще некоторыми заметками.   -  person lostphilosopher    schedule 26.02.2015
comment
@Halfstop: я рад, что я не единственный, у кого с этим проблемы!   -  person lostphilosopher    schedule 26.02.2015
comment
Когда вы остановите apache, я бы сделал ps aux |grep 'httpd', чтобы быть уверенным, что они не запущены. sudo dtruss -f apachectl start выдаст кучу ужасно выглядящих вещей, но если вы прокрутите весь путь назад до того места, где начался вывод, и просто просмотрите вывод, вы увидите, где что-то пыталось прочитать/загрузить, чаще всего ошибка полезными или достаточно очевидными, чтобы указать вам правильное направление. Я всегда просто компилировал php из исходного кода, используя установку apache по умолчанию в OSX. Я рад поделиться ./configure... , если вам интересно. Это действительно совсем не сложно.   -  person Patrick Webster    schedule 27.02.2015
comment
Подождите... разве вы не должны загружать httpd.conf из HOMEBREW_PREFIX/etc/apache2/2.2/httpd.conf Вы уверены, что работает правильная версия httpd?   -  person prodigitalson    schedule 27.02.2015


Ответы (1)


Для меня проблема заключалась в том, что после замены версии я забыл указать правильный путь:

После выполнения:

$ brew unlink php-71
$ brew reinstall php-56

это работало некоторое время, а затем я получил ошибку.

Изменение:

LoadModule php5_module /usr/local/Cellar/php56/5.6.26_3/libexec/apache2/libphp5.so

# TO

LoadModule php5_module/usr/local/opt/php56/libexec/apache2/libphp5.so

(замените версии на свои)

И перезапуск apache решил проблему для меня.

person RVandersteen    schedule 06.02.2017