Среда разработки Apache Server

Я пытаюсь объяснить свою проблему.

Обычно для этого я использую 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

Я вижу две разные конфигурации и не знаю, что я могу сделать, чтобы это исправить.

Вот почему я прошу помощи, я действительно не знаю, что еще я могу сделать, чтобы это исправить.

Не теряйте зря время, используйте Камердинер. Некоторое время пользовался заваренным apache + php, потом попробовал Valet и не могу отпустить.

Kyslik 27.03.2018 21:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
327
1

Ответы 1

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 для обоих в файле конфигурации.

Другие вопросы по теме