Я пытаюсь объяснить свою проблему.
Обычно для этого я использую XAMPP или MAMP, но я хочу использовать Apache Server, который по умолчанию поставляется с OS X High Sierra.
Итак, OS X имеет сервер apache и php, установленные по умолчанию, и они отлично работают без проблем, а localhost отлично работает со многими другими проектами, которые у меня есть, такими как angular и php.
Моя проблема в том ...
Я попытался установить среду разработки на свой компьютер для проектов php-laravel, поэтому после того, как я установил laravel с помощью homebrew и внес некоторые изменения в файлы:
/private/etc/apache2/extra/httpd-vhosts.conf
/private/etc/apache2/httpd.conf
/etc/hosts
httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "~/Sites"
#VirtualDocumentRoot "~/Sites"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "~/Sites/cms/public"
ServerName cms.test
ServerAlias *.test
</VirtualHosts>
httpd.conf
ServerRoot "/usr"
<IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
Listen 8080
</IfDefine>
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
Listen 80
</IfDefine>
User myusername
ServerName localhost:80
DocumentRoot "/Users/myusername/Sites"
<Directory "/Users/myusername/Sites">
Options All
MultiviewsMatch Any
AllowOverride All
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf
хозяева
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 cms.test
После этого я перезапустил сервер, и когда я попытался перейти к:
localhostЯ только что написал в браузере Chrome localhost
Если бы я попробовал локальный / info.phpлокальный / info.php
Как видите, внутри папки Sites есть файл info.php. папка Sites - это место, где находится ServerDirectory, и, как вы можете видеть, есть файл info.php
когда пробовал локальный / cms / общедоступный / index.phpрезультат тот же
Я выполняю $ whereis httpd, и результат / usr / sbin / httpd
затем я выполнил $ / usr / sbin / httpd -V, и результат
Server version: Apache/2.4.28 (Unix)
Server built: Oct 9 2017 19:54:20
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"
Я также выполнил команду apachectl -S и результат
VirtualHost configuration:
ServerRoot: "/usr/local/opt/httpd"
Main DocumentRoot: "/usr/local/var/www"
Main ErrorLog: "/usr/local/var/log/httpd/error_log"
Mutex rewrite-map: using_defaults
Mutex default: dir = "/usr/local/var/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/usr/local/var/run/httpd/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name = "_www" id=70
Group: name = "_www" id=70
Я вижу две разные конфигурации и не знаю, что я могу сделать, чтобы это исправить.
Вот почему я прошу помощи, я действительно не знаю, что еще я могу сделать, чтобы это исправить.






1) Похоже, у вас установлен apache в нескольких местах. Проверьте, чтобы убедиться. Делать:
find /usr -name apachectl
Если вы получили более одного результата, вероятно, вы установили одну версию из Homebrew (которая установит apachectl в / usr / local / bin и установит директиву PidFile для его файла конфигурации в / usr / local / var / run /httpd/httpd.pid) и у вас есть другая версия, которая поставляется с Sierra, которая будет установлена в / usr / sbin, вашу системную двоичную папку (и, по моему опыту с этой проблемой, установите PidFile для запуска в / etc / var / запустить/).
"Whereis" не возвращает apachectl, имеющий приоритет (то есть тот, который вы вызываете при выполнении команды). Лучшая команда:
which apachectl
Это покажет, какой apachectl вы используете в настоящее время, когда вы вводите apachectl.
Если окажется, что у вас несколько установок, вам нужно будет установить приоритет для версии apachectl, которую вы хотите, в вашем ~ / .bash_profile.
Причина, по которой вы видите две разные конфигурации, заключается в том, что вы проверяете свою конфигурацию с помощью / usr / sbin / httpd - apache, который поставляется с Sierra, и проверяете другие файлы конфигурации с помощью apachectl -S, который, вероятно, вызывает установленный httpd пользователя Homebrew.
2) Предотвращение доступа к каталогу может быть проблемой, связанной с отсутствием правильных разрешений для самих файлов. Часто вам понадобится
chown -R user:group dir_name
каталог, в котором пользователь и группа - это тот пользователь, который указан в вашем файле конфигурации. На моей машине это _www для обоих в файле конфигурации.
Не теряйте зря время, используйте Камердинер. Некоторое время пользовался заваренным apache + php, потом попробовал Valet и не могу отпустить.