在macOS上开发Web应用程序真是使人高兴。有许多设置开发环境的选项,包括广受欢迎的MAMP Pro,它在Apache,PHP和MySQL之上提供了一个不错的UI 。可是,有时MAMP Pro的速度变慢或版本过旧,或者因为配置模板和非标准构建的限制性系统而表现不佳。php
在这样的时代,人们常常寻找一种替代方法,幸运的是有一种替代方法,而且设置起来相对简单。html
在此博客文章中,咱们将引导您完成设置和配置Apache 2.4和多个PHP版本的过程。在这个两篇文章系列的第二篇博客文章中,咱们将介绍MySQL,Apache虚拟主机,APC缓存和Xdebug安装。html5
[ 2019年10月8日更新]已更新以反映macOS 10.15 Catalina的发布[2019年1月10日
更新]已更新以从外部小桶添加回PHP 5.6和PHP 7.0
[2018年12月12日更新]已更新以反映最新版本的PHP 7.3,以及从Brew中删除的PHP 7.0。git
若是您过去一直Homebrew/php
轻按本指南,并但愿升级到新Homebrew/core
方法,则应该首先按照咱们的新升级Homebrew清理当前安装。github
本指南适用于经验丰富的Web开发人员。若是您是新手开发人员,则使用MAMP或MAMP Pro会更好。web
若是还没有安装XCode,则最好先安装命令行工具,由于这些将由自制软件使用:sql
此过程在很大程度上依赖于名为Homebrew的macOS软件包管理器。使用该brew
命令能够轻松地向Mac添增强大的功能,可是首先咱们必须安装它。这是一个简单的过程,可是您须要启动Terminal(/Applications/Utilities/Terminal
)应用程序,而后输入:shell
只需按照终端提示操做,而后在须要的地方输入密码便可。这可能须要几分钟,可是完成后,一种快速的方法来确保已brew
正确安装,只需键入:macos
您可能还应该运行如下命令,以确保全部配置均正确:apache
它会指导您是否须要更正任何内容。
在Catalina上全新安装时,在遇到如下全部步骤时,我遇到了一些缺乏的库。为了使事情变得容易,请当即运行如下命令:
最新的macOS 10.15 Catalina预先安装了Apache 2.4,可是,将此版本与Homebrew一块儿使用再也不是一项简单的任务,由于Apple已在此发行版中删除了一些必需的脚本。可是,解决方案是经过Homebrew安装Apache 2.4,而后将其配置为在标准端口(80/443)上运行。
若是您已经在运行内置的Apache,则须要先将其关闭,并删除全部自动加载脚本。只需按顺序运行全部这些命令,实际上并无什么害处-即便是全新安装:
如今,咱们须要安装Brew提供的新版本:
若是没有选项,则无需从源代码构建httpd,所以能够快速安装。完成后,您应该会看到如下消息:
如今咱们只须要配置一些东西,以便新的Apache服务器自动启动
如今,您已经安装了Homebrew的Apache,并将其配置为使用特权账户自动启动。它应该已经在运行,所以您能够尝试经过将其指向来在浏览器中访问服务器http://localhost:8080
,您应该会看到一个简单的标头,上面写着“有效!”。。
若是收到消息,代表浏览器没法链接到服务器,请首先检查以确保服务器已启动。
若是Apache已启动并正在运行,则应该看到一些httpd进程。
尝试使用如下命令从新启动Apache:
您能够在从新启动期间在新的“终端”选项卡/窗口中查看Apache错误日志,以查看是否有任何无效或引发问题的内容:
Apache是经过apachectl
命令控制的,所以可使用一些有用的命令:
这-k
将当即强制重启,而不是在apache准备好并准备好时礼貌地要求重启
在过去的指南中,我老是提供使用TextEdit
预安装的默认应用程序来编辑文件的说明。可是,这并非我用的本身,由于它是一个糟糕的编辑器,在测试个人Catalina指南时,我一直遇到编码,查找行号等问题。更好的解决方案是简单地安装一个更好的编辑器。所以,请安装功能强大且功能强大的100%免费Visual Studio Code。它可在Mac,Windows和Linux上使用,但如今咱们只关心mac版本。
转到Visual Studio Code网站,而后单击“ Mac下载”
下载后,将应用程序拖到您喜欢的“应用程序”位置。接下来,您要安装命令行工具,所以请按照官方的逐步说明进行操做,以即可以code
从终端使用命令。
如今咱们有了一个能够正常使用的Web服务器,咱们要作的就是进行一些配置更改,以便它能够更好地用做本地开发服务器。
在最新版本的Brew中,您必须手动将监听端口从默认值设置8080
为80
,所以咱们将须要编辑Apache的配置文件。
若是按照上面的说明进行操做,则应该可使用Visual Studio Code经过code
Terminal命令编辑文件。可是,若是你想使用默认的 文本编辑应用程序进行编辑,您可使用open -e
命令后面的文件路径。
找到那行说
并将其更改成80
:
接下来,咱们将其配置为使用来更改Apache 的文档根目录。这是Apache用来提供文件的文件夹。默认状况下,文档根目录配置为/usr/local/var/www
。因为这是一台开发机器,所以假设咱们要更改文档根目录以指向咱们本身的主目录中的文件夹。
搜索术语DocumentRoot
,您应该看到如下行:
更改它以指向您的用户目录,其中your_user
是用户账户的名称:
您还须要<Directory>
在DocumentRoot行下方更改标记引用。这也应该更改成指向您的新文档根目录:
咱们删除了目录路径周围的可选引号,由于TextEdit可能会尝试将其转换为智能引号,并在您尝试从新启动Apache时致使语法错误。即便您在引号周围进行编辑并将其保留在原处,保存文档也可能致使其转换并致使错误。
在同<Directory>
一块中,您将找到一个AllowOverride
设置,应按如下步骤进行更改:
另外,咱们如今应该启用默认状况下已注释掉的mod_rewrite。mod_rewrite.so
经过删除前导来搜索和取消注释该行#
:
如今,咱们将Apache配置指向Sites
了主目录中的文件夹。可是,仍然存在一个问题。默认状况下,apache以user daemon
和group的身份运行daemon
。尝试访问主目录中的文件时,这将致使权限问题。在httpd.conf
文件的大约三分之一处,有两个设置能够设置User
和Group
Apache将在其下运行。更改如下内容以将您的用户账户(your_user
用您的真实用户名替换)与一组staff
:
Apache喜欢在配置中使用服务器名称,可是默认状况下此服务器处于禁用状态,所以请搜索:
并替换为:
如今,您须要Sites
在主目录的根目录中建立一个文件夹。您能够在终端或Finder中执行此操做。在这个新Sites
文件夹中建立一个简单的文件夹,index.html
并在其中放置一些虚拟内容,例如:<h1>My User Web Root</h1>
。
从新启动apache以确保您的配置更改已生效:
若是在从新启动Apache时收到错误消息,请尝试删除咱们以前设置的DocumentRoot和Directory名称周围的引号。
将您的浏览器指向http://localhost
应该显示新消息。若是您有工做,咱们能够继续!
若是您已经经过Brew安装了PHP,则须要先使用咱们的“ 升级自制程序”指南清理设置,而后再继续进行本节。
直到2018年3月,全部与PHP相关的Brew都由Homebrew/php
tab 处理,但已弃用,所以如今咱们使用Homebrew/core
软件包中提供的功能。这应该获得更好的维护,可是不那么完整。
这两个PHP 5.6和PHP 7.0已被弃用,从啤酒删除,由于他们是在支持,虽然它不建议在生产,有正当理由在开发环境中测试这些不受支持的版本。
请记住,Brew官方仅支持PHP 7.1至7.3,所以,若是您要安装PHP 5.6或PHP 7.0,则须要添加如下代码:
咱们将经过安装各类版本的PHP并根据须要使用简单的脚本在它们之间进行切换来继续。随意排除您不想安装的任何版本。
第一个将花费一些时间,由于它必须安装大量的brew依赖项。后续的PHP版本将安装得更快。
unlink
在安装PHP版本之间,您再也不须要每一个版本,由于默认状况下它们未连接
另外,您可能须要根据须要调整PHP的配置设置。常见的更改是内存设置或date.timezone
配置。php.ini
每一个版本的PHP 的文件位于如下目录中:
如今让咱们切换回第一个PHP版本:
此时,我强烈建议您关闭全部终端选项卡和窗口。这将意味着打开一个新的终端以继续下一步。强烈建议这样作,由于现有终端可能会出现一些很是奇怪的路径问题(相信我,我已经看到了!)。
快速测试咱们的版本是否正确:
您已经成功安装了PHP版本,可是咱们须要告诉Apache使用它们。您将再次须要编辑/usr/local/etc/httpd/httpd.conf
文件滚动到LoadModule
条目的底部。
若是您正确地遵循了本指南,则最后一个条目应该是您的mod_rewrite
模块:
在此下方添加如下libphp
模块:
咱们一次只能有一个模块处理PHP,所以,到目前为止,php@5.6
在其余全部注释都被注释掉的同时,咱们 不对条目进行注释。这将告诉Apache使用PHP 5.6处理PHP请求。(咱们将在之后添加切换PHP版本的功能)。
另外,您必须显式设置PHP的目录索引,所以搜索此块:
并替换为:
保存文件并中止Apache,而后再次启动,如今咱们已经安装了PHP:
测试PHP是否已按预期安装和运行的最佳方法是利用phpinfo()。这不是您想留在生产机器上的东西,但在开发环境中却无价之宝。
只需使用此单线info.php
在您Sites/
先前建立的文件夹中建立一个名为的文件。
将浏览器指向http://localhost/info.php
,您应该会看到一个闪亮的PHP信息页面:
若是您看到相似的phpinfo结果,那么恭喜!如今,您已经成功运行了Apache和PHP。您能够经过注释LoadModule ... php@5.6 ...
条目并取消注释其余版本的注释来测试其余PHP版本。而后,只需从新启动apache并从新加载同一页面便可。
咱们将Apache硬编码为使用PHP 5.6,但咱们确实但愿可以在版本之间进行切换。幸运的是,一些勤奋的人已经为咱们完成了艰苦的工做,并编写了一个很是方便的PHP切换器小脚本。
咱们将sphp
脚本安装到brew的标准中/usr/local/bin
:
在安装过程当中,Homebrew应该已将其首选/usr/local/bin
和添加/usr/local/sbin
到您的路径中。经过键入如下内容进行快速测试:
若是看不到,则可能须要手动将其添加到路径中。根据您的外壳使用的,您可能须要加入这一行~/.profile
,~/.bash_profile
或~/.zshrc
。咱们将假定您使用的是默认的bash shell,所以请将此行添加到.profile
用户目录根目录下的文件中(若是不存在,请建立该文件):
完成这些步骤以后,您应该可以经过使用如下命令切换sphp
PHP版本:PHP版本:
您可能必须输入管理员密码,它应该给您一些反馈:
经过再次将浏览器指向,测试Apache是否正在运行PHP 7.1 http://localhost/info.php
。运气好的话,您应该会看到如下内容:
Brew使更新PHP和您安装的其余软件包很是容易。第一步是更新 Brew,以获取可用更新的列表:
这将吐出可用更新列表以及全部已删除的公式。要升级软件包,只需键入:
您将须要切换到每一个已安装的PHP版本,而后再次运行update以获取每一个PHP版本的更新,并确保您正在运行所需的PHP版本。
因为咱们的PHP链接设置的方式,PHP的只有一个版本是挂在一个时间,只有当前活跃的 PHP版本将更新到最新版本。您能够经过键入如下内容查看当前的活动版本:
您能够经过键入如下命令查看PHP软件包的特定版本:
好的,到此结束了这3部分系列的第1部分。如今,您已经具备功能齐全的Apache 2.4安装,而且能够经过快速简便的方法在PHP 5.六、7.0、7.一、7.2和7.3之间进行切换。查阅第2部分,了解如何使用MySQL,虚拟主机,APC缓存,YAML和Xdebug设置环境。还能够参考第3部分,了解如何为Apache虚拟主机设置SSL。