Я в основном использовал XAMPP для своих локальных нужд разработки, но я чувствовал, что пришло время снять костыли и работать из интерфейса командной строки.
Проблема, с которой я сталкиваюсь, заключается в том, что мои виртуальные хосты направляются на ServerRoot, а не туда, куда указывает виртуальный хост.В настоящее время я пробую приложения laravel, поэтому моя файловая структура:
/ usr / local / var / www / domain1 / laravel
/ usr / local / var /www / domain1 / public_html
Вот мои файлы конфигурации
# /etc/apache2/httpd.conf
ServerRoot "/usr/local/var/www"
ServerName 127.0.0.1
DocumentRoot "/usr/local/var/www"
# /etc/apache2/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/usr/local/var/www/mydomain.com/public_html"
ServerName dev.mydomain
ServerAlias www.dev.mydomain
ErrorLog "/private/var/log/apache2/dev.mydomain/error_log"
CustomLog "/private/var/log/apache2/dev.mydomain/access_log" common
</VirtualHost>
# /ect/hosts
127.0.0.1 localhost
127.0.0.1 dev.mydomain
::1 localhost
::1 dev.mydomain
Когда я захожу на dev.mydomain в браузере, он переводит меня на /usr/local/var/www
вместо /usr/local/var/www/mydomain/public_html
Я уже перезапустил сервер.
Редактировать 1:
Когда я пересекаю путь к файлу, файлы php тоже не анализируются и открываются как обычный текстфайлы.
Редактировать 2:
Я прокомментировал строку httpd.conf DocumentRoot
и перезапустил apache, но проблема остается.Когда я делаю apachectl -t -D DUMP_VHOSTS, виртуальная конфигурация возвращается пустой.У меня есть незакомментированный include /private/etc/apache2/extra/httpd-vhosts.conf, а также модуль vhost_alias_module LoadModule.
Я изменил
Включите / private / etc / apache2 /extra / httpd-vhosts.conf
до
Включить /etc/apache2/extra/httpd-vhosts.conf
, но ониобе ссылки на один и тот же файл.
Редактировать 3:
Выполнение apachectl -S
возвращает обратно корень сервера, отличный от того, что я установил.`apachectl -t -D DUMP_VHOSTS также возвращает пустое значение.Я думаю, что возможно я использую другую версию apache, чем та, которая была установлена по умолчанию в OSX.Я играл с этим несколько лет назад.Есть ли способ узнать, где находится текущий путь конфигурации Apache?
Edit 4:
Я проверил, где работает httpd, и обнаружил, что у меня запущен apache, отличный от того, который используется по умолчанию.
MacBook-Pro:extra Daniel$ whereis httpd
/usr/sbin/httpd
Daniels-MacBook-Pro:extra Daniel$ /usr/sbin/httpd -V
Server version: Apache/2.4.29 (Unix)
Server built: Jan 17 2018 18:20:31
Server's Module Magic Number: 20120211:68
Server loaded: APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/usr"
-D SUEXEC_BIN="/usr/bin/suexec"
-D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"
Я снова раскомментировал строки vhosts в другом конфиге, но теперь я получаю ошибку при перезапуске, говоря:
httpd: Синтаксическая ошибка в строке 69 / usr / local/etc/httpd/httpd.conf: Не удается загрузить lib / httpd / modules / mod_mpm_prefork.so на сервер: dlopen (/usr/local/var/www/lib/httpd/modules/mod_mpm_prefork.so, 10): изображение не найдено