Apache Server开发环境

时间:2018-03-27 19:13:30

标签: php macos laravel apache

我试图解释他的问题。

我通常使用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

我可以看到两种不同的配置,我不知道我能做些什么来解决这个问题。

所以这就是我寻求帮助的原因,我真的不知道我还能做些什么来解决这个问题。

1 个答案:

答案 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。