macOS 10.15 Catalina Apache设置:多个PHP版本

第1部分:macOS 10.15 Catalina Web开发环境

在macOS上开发Web应用程序真是令人高兴。有许多设置开发环境的选项,包括广受欢迎的MAMP Pro,它在Apache,PHP和MySQL之上提供了一个不错的UI 。但是,有时MAMP Pro的速度变慢或版本过旧,或者由于配置模板和非标准构建的限制性系统而表现不佳。

在这样的时代,人们经常寻找一种替代方法,幸运的是有一种替代方法,并且设置起来相对简单。

在此博客文章中,我们将引导您完成设置和配置Apache 2.4和多个PHP版本的过程。在这个两篇文章系列的第二篇博客文章中,我们将介绍MySQL,Apache虚拟主机,APC缓存和Xdebug安装。

[ 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。

如果您过去一直Homebrew/php轻按本指南,并希望升级到新Homebrew/core方法,则应该首先按照我们的新升级Homebrew清理当前安装。

本指南适用于经验丰富的Web开发人员。如果您是新手开发人员,则使用MAMP或MAMP Pro会更好。

XCode命令行工具

如果尚未安装XCode,则最好先安装命令行工具,因为这些将由自制软件使用:

$ xcode-select --install

复制

自制安装

此过程在很大程度上依赖于名为Homebrew的macOS软件包管理器。使用该brew命令可以轻松地向Mac添加强大的功能,但是首先我们必须安装它。这是一个简单的过程,但是您需要启动Terminal(/Applications/Utilities/Terminal)应用程序,然后输入:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

复制

只需按照终端提示操作,然后在需要的地方输入密码即可。这可能需要几分钟,但是完成后,一种快速的方法来确保已brew正确安装,只需键入:

$ brew --version
Homebrew 2.1.13
Homebrew/homebrew-core (git revision 99f8; last commit 2019-10-08)

复制

您可能还应该运行以下命令,以确保所有配置均正确:

$ brew doctor

复制

它会指导您是否需要更正任何内容。

Catalina必需的库

在Catalina上全新安装时,在遇到以下所有步骤时,我遇到了一些缺少的库。为了使事情变得容易,请立即运行以下命令:

$ brew install openldap libiconv

复制

Apache安装

最新的macOS 10.15 Catalina预先安装了Apache 2.4,但是,将此版本与Homebrew一起使用不再是一项简单的任务,因为Apple已在此发行版中删除了一些必需的脚本。但是,解决方案是通过Homebrew安装Apache 2.4,然后将其配置为在标准端口(80/443)上运行。

如果您已经在运行内置的Apache,则需要先将其关闭,并删除所有自动加载脚本。只需按顺序运行所有这些命令,实际上并没有什么害处-即使是全新安装:

$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

复制

现在,我们需要安装Brew提供的新版本:

$ brew install httpd

复制

如果没有选项,则无需从源代码构建httpd,因此可以快速安装。完成后,您应该会看到以下消息:

??  /usr/local/Cellar/httpd/2.4.41_1: 1,652 files, 27.7MB

复制

现在我们只需要配置一些东西,以便新的Apache服务器自动启动

$ sudo brew services start httpd

复制

现在,您已经安装了Homebrew的Apache,并将其配置为使用特权帐户自动启动。它应该已经在运行,因此您可以尝试通过将其指向来在浏览器中访问服务器http://localhost:8080,您应该会看到一个简单的标头,上面写着“有效!”。。

故障排除技巧

如果收到消息,表明浏览器无法连接到服务器,请首先检查以确保服务器已启动。

$ ps -aef | grep httpd

复制

如果Apache已启动并正在运行,则应该看到一些httpd进程。

尝试使用以下命令重新启动Apache:

$ sudo apachectl -k restart

复制

您可以在重新启动期间在新的“终端”选项卡/窗口中查看Apache错误日志,以查看是否有任何无效或引起问题的内容:

$ tail -f /usr/local/var/log/httpd/error_log

复制

Apache是??通过apachectl命令控制的,因此可以使用一些有用的命令:

$ sudo apachectl start
$ sudo apachectl stop
$ sudo apachectl -k restart

复制

-k将立即强制重启,而不是在apache准备好并准备好时礼貌地要求重启

Visual Studio程式码

在过去的指南中,我总是提供使用TextEdit预安装的默认应用程序来编辑文件的说明。但是,这并不是我用的自己,因为它是一个糟糕的编辑器,在测试我的Catalina指南时,我一直遇到编码,查找行号等问题。更好的解决方案是简单地安装一个更好的编辑器。因此,请安装功能强大且功能强大的100%免费Visual Studio Code。它可在Mac,Windows和Linux上使用,但现在我们只关心mac版本。

转到Visual Studio Code网站,然后单击“ Mac下载”

下载后,将应用程序拖到您喜欢的“应用程序”位置。接下来,您要安装命令行工具,因此请按照官方的逐步说明进行操作,以便可以code从终端使用命令。

Apache配置

现在我们有了一个可以正常使用的Web服务器,我们要做的就是进行一些配置更改,以便它可以更好地用作本地开发服务器。

在最新版本的Brew中,您必须手动将监听端口从默认值设置808080,因此我们将需要编辑Apache的配置文件。

/usr/local/etc/httpd/httpd.conf

复制

如果按照上面的说明进行操作,则应该可以使用Visual Studio Code通过codeTerminal命令编辑文件。但是,如果你想使用默认的 文本编辑应用程序进行编辑,您可以使用open -e命令后面的文件路径。

$ code /usr/local/etc/httpd/httpd.conf

复制

找到那行说

Listen 8080

复制

并将其更改为80

Listen 80

复制

接下来,我们将其配置为使用来更改Apache 的文档根目录。这是Apache用来提供文件的文件夹。默认情况下,文档根目录配置为/usr/local/var/www。由于这是一台开发机器,因此假设我们要更改文档根目录以指向我们自己的主目录中的文件夹。

搜索术语DocumentRoot,您应该看到以下行:

DocumentRoot "/usr/local/var/www"

复制

更改它以指向您的用户目录,其中your_user是用户帐户的名称:

DocumentRoot /Users/your_user/Sites

复制

您还需要<Directory>在DocumentRoot行下方更改标记引用。这也应该更改为指向您的新文档根目录:

<Directory /Users/your_user/Sites>

复制

我们删除了目录路径周围的可选引号,因为TextEdit可能会尝试将其转换为智能引号,并在您尝试重新启动Apache时导致语法错误。即使您在引号周围进行编辑并将其保留在原处,保存文档也可能导致其转换并导致错误。

在同<Directory>一块中,您将找到一个AllowOverride设置,应按以下步骤进行更改:

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All

复制

另外,我们现在应该启用默认情况下已注释掉的mod_rewrite。mod_rewrite.so通过删除前导来搜索和取消注释该行#

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

复制

用户和组

现在,我们将Apache配置指向Sites了主目录中的文件夹。但是,仍然存在一个问题。默认情况下,apache以user daemon和group的身份运行daemon。尝试访问主目录中的文件时,这将导致权限问题。在httpd.conf文件的大约三分之一处,有两个设置可以设置UserGroupApache将在其下运行。更改以下内容以将您的用户帐户(your_user用您的真实用户名替换)与一组staff

User your_user
Group staff

复制

服务器名称

Apache喜欢在配置中使用服务器名称,但是默认情况下此服务器处于禁用状态,因此请搜索:

#ServerName www.example.com:8080

复制

并替换为:

ServerName localhost

复制

网站文件夹

现在,您需要Sites在主目录的根目录中创建一个文件夹。您可以在终端或Finder中执行此操作。在这个新Sites文件夹中创建一个简单的文件夹,index.html并在其中放置一些虚拟内容,例如:<h1>My User Web Root</h1>

$ mkdir ~/Sites
$ echo "<h1>My User Web Root</h1>" > ~/Sites/index.html

复制

重新启动apache以确保您的配置更改已生效:

$ sudo apachectl -k restart

复制

如果在重新启动Apache时收到错误消息,请尝试删除我们之前设置的DocumentRoot和Directory名称周围的引号。

将您的浏览器指向http://localhost应该显示新消息。如果您有工作,我们可以继续!

PHP安装

如果您已经通过Brew安装了PHP,则需要先使用我们的“ 升级自制程序”指南清理设置,然后再继续进行本节。

直到2018年3月,所有与PHP相关的Brew都由Homebrew/phptab 处理,但已弃用,因此现在我们使用Homebrew/core软件包中提供的功能。这应该得到更好的维护,但是不那么完整。

这两个PHP 5.6和PHP 7.0已被弃用,从啤酒删除,因为他们是在支持,虽然它不建议在生产,有正当理由在开发环境中测试这些不受支持的版本。

请记住,Brew官方仅支持PHP 7.1至7.3,因此,如果您要安装PHP 5.6或PHP 7.0,则需要添加以下代码:

$ brew tap exolnet/homebrew-deprecated

复制

我们将通过安装各种版本的PHP并根据需要使用简单的脚本在它们之间进行切换来继续。随意排除您不想安装的任何版本。

$ brew install [email protected]
$ brew install [email protected]
$ brew install [email protected]
$ brew install [email protected]
$ brew install [email protected]

复制

第一个将花费一些时间,因为它必须安装大量的brew依赖项。后续的PHP版本将安装得更快。

unlink在安装PHP版本之间,您不再需要每个版本,因为默认情况下它们未链接

另外,您可能需要根据需要调整PHP的配置设置。常见的更改是内存设置或date.timezone配置。php.ini每个版本的PHP 的文件位于以下目录中:

/usr/local/etc/php/5.6/php.ini
/usr/local/etc/php/7.0/php.ini
/usr/local/etc/php/7.1/php.ini
/usr/local/etc/php/7.2/php.ini
/usr/local/etc/php/7.3/php.ini

复制

现在让我们切换回第一个PHP版本:

$ brew unlink [email protected] && brew link --force --overwrite [email protected]

复制

此时,我强烈建议您关闭所有终端选项卡和窗口。这将意味着打开一个新的终端以继续下一步。强烈建议这样做,因为现有终端可能会出现一些非常奇怪的路径问题(相信我,我已经看到了!)。

快速测试我们的版本是否正确:

php -v

PHP 5.6.40 (cli) (built: Apr 23 2019 11:14:34)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

复制

Apache PHP安装-第1部分

您已经成功安装了PHP版本,但是我们需要告诉Apache使用它们。您将再次需要编辑/usr/local/etc/httpd/httpd.conf文件滚动到LoadModule条目的底部。

如果您正确地遵循了本指南,则最后一个条目应该是您的mod_rewrite模块:

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

复制

在此下方添加以下libphp模块:

LoadModule php5_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp5.so
#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so

复制

我们一次只能有一个模块处理PHP,因此,到目前为止,[email protected]在其他所有注释都被注释掉的同时,我们 不对条目进行注释。这将告诉Apache使用PHP 5.6处理PHP请求。(我们将在以后添加切换PHP版本的功能)。

另外,您必须显式设置PHP的目录索引,因此搜索此块:

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

复制

并替换为:

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

复制

保存文件并停止Apache,然后再次启动,现在我们已经安装了PHP:

$ sudo apachectl -k stop
$ sudo apachectl start

复制

验证PHP安装

测试PHP是否已按预期安装和运行的最佳方法是利用phpinfo()。这不是您想留在生产机器上的东西,但在开发环境中却无价之宝。

只需使用此单线info.php在您Sites/先前创建的文件夹中创建一个名为的文件。

echo "<?php phpinfo();" > ~/Sites/info.php

复制

将浏览器指向http://localhost/info.php,您应该会看到一个闪亮的PHP信息页面:

如果您看到类似的phpinfo结果,那么恭喜!现在,您已经成功运行了Apache和PHP。您可以通过注释LoadModule ... [email protected] ...条目并取消注释其他版本的注释来测试其他PHP版本。然后,只需重新启动apache并重新加载同一页面即可。

PHP切换器脚本

我们将Apache硬编码为使用PHP 5.6,但我们确实希望能够在版本之间进行切换。幸运的是,一些勤奋的人已经为我们完成了艰苦的工作,并编写了一个非常方便的PHP切换器小脚本。

我们将sphp脚本安装到brew的标准中/usr/local/bin

$ curl -L https://gist.githubusercontent.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2/raw > /usr/local/bin/sphp
$ chmod +x /usr/local/bin/sphp

复制

检查你的路径

在安装过程中,Homebrew应该已将其首选/usr/local/bin和添加/usr/local/sbin到您的路径中。通过键入以下内容进行快速测试:

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Apple/bin

复制

如果看不到,则可能需要手动将其添加到路径中。根据您的外壳使用的,您可能需要加入这一行~/.profile~/.bash_profile~/.zshrc。我们将假定您使用的是默认的bash shell,因此请将此行添加到.profile用户目录根目录下的文件中(如果不存在,请创建该文件):

export PATH=/usr/local/bin:/usr/local/sbin:$PATH

复制

测试PHP切换

完成这些步骤之后,您应该能够通过使用以下命令切换sphpPHP版本:PHP版本:

$ sphp 7.1

复制

您可能必须输入管理员密码,它应该给您一些反馈:

Switching to [email protected]
Switching your shell
Unlinking /usr/local/Cellar/[email protected]/5.6.40... 319 symlinks removed
Unlinking /usr/local/Cellar/[email protected]/7.0.33... 0 symlinks removed
Unlinking /usr/local/Cellar/[email protected]/7.1.32_1... 0 symlinks removed
Unlinking /usr/local/Cellar/[email protected]/7.2.23... 0 symlinks removed
Unlinking /usr/local/Cellar/php/7.3.10... 208 symlinks removed
Linking /usr/local/Cellar/[email protected]/7.1.32_1... 25 symlinks created

If you need to have this software first in your PATH instead consider running:
  echo ‘export PATH="/usr/local/opt/[email protected]/bin:$PATH"‘ >> ~/.zshrc
  echo ‘export PATH="/usr/local/opt/[email protected]/sbin:$PATH"‘ >> ~/.zshrc
You will need sudo power from now on
Switching your apache conf
Restarting apache

PHP 7.1.32 (cli) (built: Oct  6 2019 20:44:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.32, Copyright (c) 1999-2018, by Zend Technologies

All done!

复制

通过再次将浏览器指向,测试Apache是??否正在运行PHP 7.1 http://localhost/info.php。运气好的话,您应该会看到以下内容:

更新PHP和其他Brew软件包

Brew使更新PHP和您安装的其他软件包非常容易。第一步是更新 Brew,以获取可用更新的列表:

$ brew update

复制

这将吐出可用更新列表以及所有已删除的公式。要升级软件包,只需键入:

$ brew upgrade

复制

您将需要切换到每个已安装的PHP版本,然后再次运行update以获取每个PHP版本的更新,并确保您正在运行所需的PHP版本。

激活特定/最新的PHP版本

由于我们的PHP连接设置的方式,PHP的只有一个版本是挂在一个时间,只有当前活跃的 PHP版本将更新到最新版本。您可以通过键入以下内容查看当前的活动版本:

$ php -v

复制

您可以通过键入以下命令查看PHP软件包的特定版本:

$ brew info [email protected]
  [email protected]: stable 7.1.32 (bottled) [keg-only]
  General-purpose scripting language
  https://www.php.net/
  /usr/local/Cellar/[email protected]/7.1.32_1 (513 files, 62.9MB) *
    Poured from bottle on 2019-10-08 at 18:21:32
  From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/[email protected]
  ==> Dependencies
  Build: httpd ?, pkg-config ?
  Required: apr ?, apr-util ?, aspell ?, autoconf ?, curl-openssl ?, freetds ?, freetype ?, gettext ?, glib ?, gmp ?, icu4c ?, jpeg ?, libpng ?, libpq ?, libtool ?, libzip ?, mcrypt ?, openldap ?, [email protected] ?, sqlite ?, tidy-html5 ?, unixodbc ?, webp ?
...

复制

好的,到此结束了这3部分系列的第1部分。现在,您已经具有功能齐全的Apache 2.4安装,并且可以通过快速简便的方法在PHP 5.6、7.0、7.1、7.2和7.3之间进行切换。查阅第2部分,了解如何使用MySQL,虚拟主机,APC缓存,YAML和Xdebug设置环境。还可以参考第3部分,了解如何为Apache虚拟主机设置SSL。

原文地址:https://www.cnblogs.com/ihuangjianxin/p/11773770.html

时间: 2024-07-29 17:02:36

macOS 10.15 Catalina Apache设置:多个PHP版本的相关文章

macOS 10.15 Catalina xxx.app已损坏,无法打开,你应该将它移到废纸篓解决方法

原文连接:https://www.macwk.com/article/mac-catalina-1015-file-damage 更新macOS 10.15 Catalina后,很多在10.14上可以使用的App都会提示提示[xxx已损坏,无法打开,你应该将它移到废纸篓解决办法],哪怕你在[安全与隐私 > 通用]中已经开启了“任何来源”,但还是会这样提示,下边下面就教大家如何修复. 准备工作:检查是否已开启任何来源,已开启的请忽略准备工作 先打开系统偏好设置,检查 安全与隐私 -> 通用选项卡

黑苹果 MacOS 10.15 Catalina安装教程

10.15 Catalina 桌面 一.准备工作 一个8G以上的U盘(有的U盘标的是8G,实际只有7.X,实际容量小于7.5G的会失败) MacOS镜像.TransMac(刻录工具).DiskGenius(分区工具).EasyUEFI(引导工区).EFI驱动文件. 安装工具 二.制作启动U盘 1.将您的U盘插入电脑,为保证成功,首先将U盘以默认值格式化一次: 格式化U盘 2.安装刻录软件TransMac并激活.激活教程非常简单(替换): 安装刻录软件TransMac并激活 3.以管理员身份运行T

加快Mac运行macOS 10.15 Catalina的Mac的10个最佳技巧

在macOS Catalina正式发布后,数百万的Mac用户已经下载了该系统.但是,此更新的Apple操作系统带有其自身的主要或次要故障.而最大的损失是速度.但是不用担心!我们提出了一些解决方案和技巧,以加快运行macOS Catalina的Mac的运行速度. 在本文中,我们将揭示10个技巧,这些技巧可帮助许多Mac用户加快macOS Catalina的速度.因此,如果要加快在macOS Catalina上运行的Mac的速度,只需立即遵循以下提示! 技巧1:在macOS Catalina中停止启

npm install 提示 `gyp: No Xcode or CLT version detected!` MacOS 10.15

https://github.com/nodejs/node-gyp/issues/569 https://github.com/nodejs/node-gyp/issues/1927 解决链接:https://github.com/nodejs/node-gyp/issues/1927#issuecomment-565633977 到苹果开发者下载中心下载对应软件 Sharing a new solution that worked for me. NONE of the above solu

macOS 10.15 开启 HiDPI

普通的显示,接上 MacBook 发现原生的分辨率设置在 2K 显示器上字体很小,换成 1080P 分辨率显示效果又特别模糊.下面介绍MacBook强行开启 HiDPI. 什么是 HiDPI 它使用横纵 2 个物理像素也就是 4 个物理像素来显示 1 个像素区域,结果就是图像的细节得到翻倍.更清晰.边缘更平滑. 拿 13 寸的 MacBook Pro 举例,它的屏幕物理分辨率是 2560 x 1600,所以原生的 HiDPI 分辨率就是 1280x800.更高的一档 1440x900 HiDPI

macOS Catalina 10.15.4亮点在iCloud 云盘!要不要更新?先来看看更新都有哪些利弊

苹果今天发布了macOS Catalina 10.15.4正式版,增加了多项新功能.这次更新最大的变化在于 iCloud 云盘可以支持像 Dropbox.Google Drive 那样的共享文件夹功能,更便于协作和文件分享.那到底要不要更新?先来看看都更新有哪些利弊. macOS Catalina 10.15.4正式版发布增加了多项新功能.macOS Catalina 10.15.4加入了iCloud云盘文件夹共享.“屏幕使用时间”中的限定通信.Apple Music歌词实时显示等功能.本更新还

MacOS Catalina 10.15安装教程,启动U盘制作及安装方法

苹果推送了 macOS Catalina 10.15 系统正式版更新,大家可以升级新系统了!话不多说,下面就为大家分享MacOS Catalina 10.15的安装教程. 在尝试安装MacOS Catalina 10.15之前,应首先检查是否支持Mac计算机.根据Apple的官方网站,macOS Catalina 10.15仅在MacBook Air 2012及更高版本,MacBook Pro 2012及更高版本,Mac mini 2012及更高版本,iMac 2012及更高版本,Mac Pro

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 扩展 iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html iptables限制syn速率 http://www.aminglinux.com/bbs/thre

升级到macOS 10.12 mysqlb报错ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)

系统升级到macOS 10.12后启动mysql后,在终端输入mysql 报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES/NO) 解决办法1 在系统偏好设置里关闭mySQL2 $ cd /usr/bin3 $ sudo mysqld_safe --skip-grant-tables4 再打开一个终端$ mysqlmysql> use mysql;mysql> UPDATE