Я перенес свою реализацию 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
ps aux |grep 'httpd'
, чтобы быть уверенным, что они не запущены.sudo dtruss -f apachectl start
выдаст кучу ужасно выглядящих вещей, но если вы прокрутите весь путь назад до того места, где начался вывод, и просто просмотрите вывод, вы увидите, где что-то пыталось прочитать/загрузить, чаще всего ошибка полезными или достаточно очевидными, чтобы указать вам правильное направление. Я всегда просто компилировал php из исходного кода, используя установку apache по умолчанию в OSX. Я рад поделиться./configure...
, если вам интересно. Это действительно совсем не сложно. - person Patrick Webster   schedule 27.02.2015HOMEBREW_PREFIX/etc/apache2/2.2/httpd.conf
Вы уверены, что работает правильная версия httpd? - person prodigitalson   schedule 27.02.2015