Mac M2如何配置php开发环境?

Mac M2如何配置php开发环境?

喜欢这个问题 | 分享 | 新建回答

回答

黄太龙

Jan 3, 2024
2 赞

MacOS系统是自带apachectl的。

sudo apachectl start 

即可启动apache

默认配置文件,监听的端口是80端口。

此时启动浏览器 输入 localhost即可看到提示“it works”

这就算apache运行成功了

关闭apache服务器 sudo apachectl stop即可



接下来说php问题

mac m2 不再默认安装php了

所以要用HomeBrew去安装php

brew install php

Homebrew的安装方法看这里。

安装好php后,先查看一下php的版本

php -v

其实,brew安装好php一般会提示如下信息:

To enable PHP in Apache add the following to httpd.conf and restart Apache:

    LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>

Finally, check DirectoryIndex includes index.php
    DirectoryIndex index.php index.html

The php.ini and php-fpm.ini file can be found in:

    /opt/homebrew/etc/php/8.3/

To start php now and restart at login:

  brew services start php

Or, if you don't want/need a background service you can just run:

  /opt/homebrew/opt/php/sbin/php-fpm --nodaemonize

对于我的安装来说,8.3就是php版本。

根据HomeBrew的提示,修改apache配置文件,

sudo vim /etc/apache2/httpd.conf

再设置httpd.conf的最后或者“LoadModule”位置(搜索“LoadModule”即可)加入如下信息:

LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
<FilesMatch \.php$>
   SetHandler application/x-httpd-php
</FilesMatch>

然后 “sudo apachectl restart”



再修改一下apache配置文件,找到如下位置:

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

修改成:

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

之后重启apache即可。



MacOS的apache的网站文件一般会放在“/Library/WebServer/Documents”,把你的index.php等文件放过去即可。这个位置也能在配置文件中修改,我图省事就没修改了。



到这里,很可能还是无法成功运行。

这时候你会发现怎么也运行不了,切在log中查不到错误信息。

这时候,你可以手动重启一下httpd一下“httpd -k restart

会得到如下报错信息:

[so:error] [pid 19150] AH06665: No code signing authority for module at /opt/homebrew/opt/php/lib/httpd/modules/libphp.so specified in LoadModule directive.

httpd: Syntax error on line 208 of /private/etc/apache2/httpd.conf: Code signing absent - not loading module at: /opt/homebrew/opt/php/lib/httpd/modules/libphp.so

其实这个就是证书安全问题,你需要自己创建一个证书颁发给php,否则从安全角度来说,并不信任php模块。

MacOS颁发证书给自己的php,见这里。