M1 Mac 安装 PHP + Swoole 开发环境

在 2022 年我入手了人生中的第一台 macbook,在此之前我就在经常在使用黑苹果与WSL进行开发项目。拿到 macos 熟悉了一段时间之后,变摸索出了构建PHP环境的差异处。

同样也制作了一键脚本,开源在 https://github.com/Mfuns-cn/build-php-shell 可以做到开箱即用,但是也推荐阅读过程方便纠错。

示例环境

系统信息

  • M1 Pro 8 core
  • MacOS Monterey 12.5
  • Home-brew https://brew.sh/ (make sure install first)
  • 终端 (Terminal.app) 未使用 Rosetta 开启

安装环境

  • PHP 8.1.10
  • Swoole 4.8.7
  • Composer
  • Redis 扩展

安装环境依赖

brew install wget autoconf automake libtool re2c bison pkg-config openssl libiconv oniguruma readline pcre2

编译 PHP

下载并解压 PHP 源代码

wget https://www.php.net/distributions/php-8.1.10.tar.gz
tar -xzvf php-8.1.10.tar.gz

编译准备

./configure --prefix="$(pwd)"/macos/php81/php \
 --with-external-pcre=$(brew --prefix pcre2) \
 --with-openssl=$(brew --prefix openssl) \
 --with-iconv=$(brew --prefix libiconv) \
 --with-readline=$(brew --prefix readline) \
 --enable-mysqlnd \
 --with-pdo-mysql \
 --with-pdo-mysql=mysqlnd \
 --enable-bcmath \
 --enable-fpm \
 --enable-mbstring \
 --enable-phpdbg \
 --enable-shmop \
 --enable-sockets \
 --enable-sysvmsg \
 --enable-sysvsem \
 --enable-sysvshm \
 --with-zlib \
 --with-curl \
 --with-pear \
 --enable-pcntl

确保看到如上提示在进行后续操作,反之请先检查环境依赖。

开始编译

make -j $(sysctl -n hw.ncpu)
make install

验证 PHP 环境

cp tmp/php81/php-8.1.3/php.ini-development tmp/php81/php/lib/php.ini
export PATH=${base_dir}"/macos/php81/php/bin:$PATH"
sudo $(pwd)/macos/php81/php/bin/php -v

安装 Swoole

wget https://github.com/swoole/swoole-src/archive/refs/tags/v4.8.7.zip
unzip v4.8.7.zip
cd "swoole-src-4.8.7" || exit
"$(pwd)"/macos/php81/php/bin/phpize
ln -s $(brew --prefix pcre2)/include/pcre2.h "$(pwd)"/macos/php81/php/include/php/ext/pcre/pcre2.h
./configure \
 --enable-openssl \
 --with-openssl-dir=$(brew --prefix openssl) \
 --enable-http2 \
 --enable-swoole-curl \
 --enable-swoole-json \
 --enable-thread-context \
 --with-php-config=$(pwd)/macos/php81/php/bin/php-config
make -j $(sysctl -n hw.ncpu)
make install

使用 PECL/PEAR 安装扩展

wget http://pear.php.net/go-pear.phar
sudo $(pwd)/macos/php81/php/bin/php go-pear.phar
sudo $(pwd)/macos/php81/php/bin/pear config-get php_dir
sudo $(pwd)/macos/php81/php/bin/pecl channel-update pecl.php.net
sudo $(pwd)/macos/php81/php/bin/pecl install redis

配置 php.ini 配置文件

echo "memory_limit=1G" >> $(pwd)/macos/php81/php/lib/php.ini
echo "opcache.enable_cli = 'On'" >> $(pwd)/macos/php81/php/lib/php.ini
echo "extension=redis.so" >> $(pwd)/macos/php81/php/lib/php.ini
echo "extension=swoole.so" >> $(pwd)/macos/php81/php/lib/php.ini
echo "swoole.use_shortname = 'Off'" >> $(pwd)/macos/php81/php/lib/php.ini

测试环境

$(pwd)/macos/php81/php/bin/php -v
$(pwd)/macos/php81/php/bin/php -m
$(pwd)/macos/php81/php/bin/php --ri swoole

安装 Composer

cd $(pwd)/macos/php81 || exit
wget https://mirrors.aliyun.com/composer/composer.phar
php composer.phar

设置环境变量

sudo ln -s -f ${pwd}/macos/php81/php/bin/php /usr/local/bin/php
sudo ln -s -f ${pwd}/macos/php81/composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

提示

遇到一些提示不清楚的选择就直接回车即可,请注意实际情况下的各种文件路径。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇