在macOS Monterey上,使用PHP和Apache
macOS Monterey不再默认捆绑PHP,所以安装…的时候也需要手动处理Apache,以下是备忘录。
1. 安装Homebrew
假设是全新的操作系统,首先安装Homebrew。
您可以在Homebrew的网站上复制安装命令。
$/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
将PHP安装
一旦完成了Homebrew的安装,然后继续安装PHP。
虽然应该未安装,但先来检查PHP的版本的命令。
$php -v
我认为将会显示”未找到命令”。
(如果您已经自己安装了PHP,则会显示当前版本)
确认可以安装的php软件包
$brew search php
有些 PHP 版本将会显示出来,您可以选择安装您想要的版本。
这次我们决定安装 8.0 版本。
$brew install php@8.0
将PHP路径添加到环境变量中。
只是使用Homebrew安装无法使用PHP,需要设置路径。
在这次操作中,我们将路径设置在当前最新的Mac标准Zsh上。
$echo 'export PATH="/usr/local/opt/php@8.0/bin:$PATH"' >> ~/.zshrc
只需要一个选项,以下是对以上内容的中文本地化改写:
重启终端后,路径将被通知,从而可以使用PHP命令。
立即检查安装的版本。
$php -v
PHP 8.0.17 (cli) (built: Mar 18 2022 09:45:09) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.17, Copyright (c) Zend Technologies
with Zend OPcache v8.0.17, Copyright (c), by Zend Technologies
应该显示如下。
4. 安装Apache
继续使用Homebrew安装Apache。
$brew install httpd
完成安装后,停止Mac上的标准Apache服务。基本上它应该是自动启动的,但为了确认是否正在运行,可以进行检查。
$ps -ax | grep httpd
请确认。
131 ?? 0:07.12 /usr/sbin/httpd -D FOREGROUND
627 ?? 0:00.02 /usr/sbin/httpd -D FOREGROUND
25953 ?? 0:00.01 /usr/sbin/httpd -D FOREGROUND
39787 ttys002 0:00.00 grep httpd
如果有像”/usr/sbin/httpd -D FOREGROUND”这样的显示,它就正在运行。
顺便说一下,如果使用apachectl停止使用,
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using MacBookPro.local. Set the 'ServerName' directive globally to suppress this message
httpd (no pid file) not running
出现了这个错误,无法停止。这次是这样的。
$sudo -s launchctl stop /System/Library/LaunchDaemons/org.apache.httpd.plist
$sudo -s launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
我会停止它。
顺便说一下,下面是在启动Mac时禁止自动启动Apache的命令。
如果你用ps命令再次确认,我认为Apache已经停止了。
5. 启动已安装的Apache
完成安装和停止标准Apache后,使用Homebrew启动安装的Apache。
$brew services start httpd
使用ps命令确认正在运行。
6. Apache 设置
之前我们通过编辑/etc/apache2/httpd.cnf来配置Apache,但现在我们要编辑Homebrew安装的配置文件。
文件的位置是/usr/local/etc/httpd/httpd.cnf。
我们将进行以下项目的添加和修改(根据版本的不同,行可能会有所不同)。
-
- 52行付近 Listen 8080の下にListen 80を追加
-
- 181行付近 行頭の#を削除してrewriteモジュールを有効にする
-
- 181行付近 LoadModuleの記述が並ぶ最後に以下を追記
-
- LoadModule php_module /usr/local/opt/php@8.0/lib/httpd/modules/libphp.so
-
- AddType application/x-httpd-php .php
-
- 225行付近 行頭の#を削除して、www.exsample.com:8080をlocalhost:80に書き換える
-
- 248行付近 必要に応じてDocumentRootを変更(今回は/Library/WebServer/Documentsに設定)
-
- またその直後にあるも同じディレクトリに書き換える
-
- ファイル末尾に追記
-
- PHPINIDir /usr/local/etc/php/8.0/
- ここまで記述したら保存してApacheを再起動する(ここはapachectlでOK)
$sudo -s apachectl restart
如果能够顺利启动并且在预定的目录中放置的phpinfo.php文件可以在浏览器中确认,那么设置就完成了。
<?php
phpinfo();
?>