我试图解释他的问题。
我通常使用XAMPP或MAMP,但我想使用默认安装的OS X High Sierra附带的Apache服务器。
因此,OS X默认安装了apache服务器和php,并且它们运行良好而没有问题,并且localhost与许多其他我喜欢angular和php的项目一起正常工作。
我的问题是......
我尝试在我的计算机上为php-laravel项目安装一个开发环境,所以在我用自制软件安装laravel并对文件进行一些更改之后:
/private/etc/apache2/extra/httpd-vhosts.conf
/private/etc/apache2/httpd.conf
的/ etc /主机
的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
在此之后我重新启动服务器,当我尝试去:
本地主机 I just wrote on chrome browser localhost
如果我尝试 localhost / info.php localhost/info.php
正如您在Sites文件夹中看到的那样,有一个info.php文件 folder Sites is where ServerDirectory is and as you can see there are an info.php file
当我尝试 localhost / cms / public / index.php 时 the result is the same
我执行 $ 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
我可以看到两种不同的配置,我不知道我能做些什么来解决这个问题。
所以这就是我寻求帮助的原因,我真的不知道我还能做些什么来解决这个问题。
答案 0 :(得分:0)
1)看起来你已经在多个位置安装了apache。检查以确保。做:
find /usr -name apachectl
如果你得到多个结果,那么很可能你已经安装了Homebrew的一个版本(它将在/ usr / local / bin中安装apachectl,并为它配置PidFile指令的配置文件到/ usr / local / var / run / httpd / httpd.pid),还有Sierra附带的另一个版本,它将安装在你的系统二进制文件夹/ usr / sbin中(根据我对这个问题的经验,将PidFile设置为在/ etc / var / run /中运行。
<强>&#34; Whereis&#34;不返回优先级高的的apachectl(即执行命令时调用的是哪一个)。更好的命令是:
which apachectl
当您输入apachectl时,会显示您当前正在使用的apachectl。
如果事实证明您有多个安装,则需要在〜/ .bash_profile中为您想要的apachectl版本设置优先级。
您看到两种不同配置的原因是因为您正在使用/ usr / sbin / httpd检查一个配置 - Sierra自带的apache,并检查其他配置文件apachectl -S,可能调用Homebrew安装的httpd。
2)防止访问目录可能是由于对文件本身没有正确权限而导致的问题。通常你需要
chown -R user:group dir_name
目录,其中user和group是用户在配置文件中列出的内容。在我的机器上,在配置文件中这两者都是_www。