写在前面
这篇文章可能会有一些使用上的纰漏(因为并没有仔细研究官方文档),如果有问题欢迎提出来共同学习
本人的使用环境:
macOS 10.14.4 Mojave
Apache 2.4.34
PHP 7.1.23
文末有一定的帮助信息,当然可能没什么用,但是如果遇到了问题,可以参考一下,一般来说按照我的配置走应该是不会有问题的
Apache
简单介绍及命令
众所周知,mac下自带有Apache,下面是几个常用的命令
#启动Apache
sudo apachectl start
#关闭Apache
sudo apachectl stop
#重启Apache
sudo apachectl restart
#如果有兴趣,您也可以查看自己的版本号,命令如下
httpd -v
当然命令是容易的,但是正常运行的情况下是不会有任何提示的,因此如果想要看自己是否启动,就需要浏览器打开http://localhost即可验证。如果显示It Works的字样,那么恭喜你已经成功启动了Apache。
配置PHP相关
众所周知mac还自带的有php,所以不需要安装配置,当然这里我们是要配置Apache下的PHP环境,所以必不可少的需要调整Apache的配置,Apache的配置文件路径在
/private/etc/apache2/httpd.conf
打开访达使用快捷键Command+SHift+G,可以输入文件路径进行跳转,找到该文件后我们可以用编辑器(这里我用的VS Code)打开这个文件,搜索php可以找到
#LoadModule php7_module libexec/apache2/libphp7.so
将前面的#号去掉,重启Apache,即可在Apache下启用PHP。
配置工作路径相关(文章重点)
启动了PHP也是没有终端提示的,因此我们需要手动写一个php文件用来测试,这里我写了一个index.php,内容如下
<?php phpinfo(); ?>
可以显示当前PHP各种信息,最主要还是用来看是否配置成功的。
当我们写好这个文件的时候,你会突然意识到,这个文件要放哪。
#LoadModule userdir_module libexec/apache2/mod_userdir.so
这个时候我们打开Apache的配置文件,其中DocumentRoot就是我们想要的工作空间,默认的路径在/Library/WebServer/Documents,看起来是个不错的路径,但是当我们试图将文件拖入的时候会被要求输入密码,使用命令
ls -l /Library/WebServer/Documents
结果并不出意料
不得不说这个目录权限挺劝退的,那我们还是改一下目录吧。改目录有很多种方法,这里介绍两种:
全局修改:
修改Apache配置文件中的DocumentRoot项后面以及<Directory "/Library/WebServer/Documents">中引号内容修改成你想要设置的目录(注意目录权限问题),然后将上下两个<Directory />与<Directory "">标签中的Require all deny改成Require all granted后重启Apache,理论上来说应该可以(但是我失败了,应该是当时目录文件权限出问题了)
按用户修改
在多用户系统中我们通过UserDir指令就可以让每个用户都在自己的主目录下拥有一个网站,这个特性默认是关闭的。不过打开很容易,在 Apache的配置文件中找到
#Include /private/etc/apache2/extra/httpd-userdir.conf
#LoadModule userdir_module libexec/apache2/mod_userdir.so
将这两行前的#号去掉保存即可,然后我们打开/private/etc/apache2/extra/httpd-userdir.conf,找到
#Include /private/etc/apache2/users/*.conf
去掉#号保存就算完成了多用户的配置。当然还没有结束,我们需要使用的用户进行单独的配置。在/private/etc/apache2/users/文件夹下创建一个文件,文件名为终端执行whoami的结果加".conf"(不带引号),例如:
touch novasliver.conf
然后我们在文件内输入如下内容:
UserDir ***
<Directory "****">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Require all granted
</Directory>
其中***表示你要设置的这个路径相对用户主目录的相对地址,****表示这个路径的绝对路径,上下两个路径请确保是同一个路径(这里同样需要注意路径权限的问题)。然后为了确保直接访问根目录不会出现403,我们仍旧需要将<Directory />标签中的Require all deny改成Require all granted,然后重启Apache,即可通过http://localhost/~username访问你自定义的这个路径了,其中username就是方才的whoami的结果。
虚拟主机
这个网上教程不少的,你看看这个?
注意事项
- 请务必确保路径的权限,如果按照本文教程出现403错误,多半是文件权限问题,请确保文件夹的访问权限,或者文件夹是否存在。
- 方法“按用户修改”中访问时请不要忘记中间的~。
- 如果执行启动Apache的命令后打不开http://localhost的话,请执行下面的命令以查看Apache的错误日志:
tail -f /var/log/apache2/error_log
然后根据错误日志的内容判断下一步的行为。
- 如果想使用http://localhost/~username直接打开你的index.php,请在Apache的配置文件中找到
在index.html后加入index.php,注意中间要留有空格,其他文件同理。<IfModule dir_module> DirectoryIndex index.html </IfModule>