在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();
      ?>
      
      bannerAds