mac 编译安装php7.4 openssl扩展错误记录

文章主要介绍了在编译PHP时遇到的OpenSSL版本不兼容问题,以及如何解决这个问题。首先确认安装了openssl,然后调整PKG_CONFIG_PATH环境变量。如果错误依然存在,可能是由于PHP版本和OpenSSL版本不匹配。解决方案包括安装指定版本的openssl,设置环境变量,并使用phpbrew来安装特定版本的PHP和openssl扩展。

【错误】

Package requirements (openssl >= 1.0.1) were not met:

No package 'openssl' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables OPENSSL_CFLAGS
and OPENSSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

【解决】

1.确认安装了openssl,如未安装则进行安装

brew install openssl

2.追加PKG_CONFIG_PATH 路径和声明openssl lib/include 的路径

vi ~/.bash_profile
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
export OPENSSL_LIBS="-L/usr/local/Cellar/openssl@1.1/1.1.1q/lib"
export OPENSSL_CFLAGS="-I/usr/local/Cellar/openssl@1.1/1.1.1q/include"
export PATH=/usr/local/opt/openssl@1.1/bin:$PATH
export LDFLAGS=-L/usr/local/opt/openssl@1.1/lib
export CPPFLAGS=-I/usr/local/opt/openssl@1.1/include

3.注册 openssl 到 pkgconfig 中

# 查看 openssl 是否在 pkgconfig 中
pkg-config --list-all | grep openssl
 
# 如果 pkgconfig 中没有 openssl 包 则手动建立 或者 尝试 brew unlink/link 重建
cd /usr/local/Cellar/openssl@1.1/1.1.1d/lib/pkgconfig
ln -s `pwd`/openssl.pc /usr/local/lib/pkgconfig

【错误】

108 warnings and 1 error generated.

make: *** [ext/openssl/openssl.lo] Error 1

这个错误主要是 openssl 版本 php版本不兼容,brew install openssl 默认安装的是最新openssl@3版本,发生以上错误

由于Debian Stretch默认使用OpenSSL 1.1.0。PHP 5.6 与更高版本的 OpenSSL 不兼容。这是一个 PHP 问题,但不确定它们是否会修复。

【解决】

MacOS 11.6 Big Sur: unable to compile PHP · Issue #1249 · phpbrew/phpbrew · GitHub

1.首先安装php8.0版本

export OPENSSL_PREFIX=$(brew --prefix openssl@1.1)
export OPENSSL_CFLAGS="-I${OPENSSL_PREFIX}/include"
export OPENSSL_LIBS="-L${OPENSSL_PREFIX}/lib -lcrypto -lssl"

phpbrew --debug install -j 12 8.0 +default -- --with-openssl="shared,${OPENSSL_PREFIX}"

2.选择php8

phpbrew use php-8.0.20

3.安装openssl扩展

phpbrew ext install openssl -- --with-openssl=$OPENSSL_PREFIX

4.正常安装php7.4

export CFLAGS="-Wno-implicit-function-declaration"

phpbrew install -j 12 7.4 +default -- --with-openssl="shared,${OPENSSL_PREFIX}"

### 编译安装 PHP 7.4 环境 #### 准备工作 为了成功编译安装 PHP 7.4,在开始之前需确保服务器已准备好必要的开发工具和依赖库。可以通过以下命令来安装这些必需组件: ```bash yum groupinstall "Development Tools" -y yum install libxml2-devel openssl-devel bzip2-devel libcurl-devel \ libjpeg-devel libpng-devel freetype-devel gmp-devel readline-devel \ sqlite-devel libXpm-devel libc-client-devel oniguruma-devel -y ``` #### 下载 PHP 源码包 获取官方发布的稳定版 PHP 7.4 源代码压缩文件,并将其保存至 `/usr/local` 目录下。 ```bash cd /usr/local/ wget https://www.php.net/distributions/php-7.4.16.tar.gz tar zxf php-7.4.16.tar.gz cd php-7.4.16 ``` #### 配置编译选项 根据实际需求调整配置参数,这里提供了一组常用的设置作为参考: ```bash ./configure --prefix=/usr/local/php \ --with-config-file-path=/etc \ --enable-fpm \ --with-mysqli \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib \ --with-libxml-dir=/usr \ --enable-xml \ --disable-rpath \ --enable-bcmath \ --enable-shmop \ --enable-sysvsem \ --enable-inline-optimization \ --with-curl \ --enable-mbregex \ --enable-mbstring \ --with-gd \ --with-openssl \ --with-mhash \ --enable-pcntl \ --enable-ftp \ --with-gettext \ --with-snmp \ --enable-exif \ --enable-soap \ --with-pear \ --with-pgsql=shared \ --with-pdo-pgsql \ --without-kerberos \ --with-imap \ --with-imap-ssl \ --with-ldap \ --with-ldap-sasl \ --with-readline \ --with-tidy \ --with-pspell \ --with-recode \ --enable-opcache=no ``` #### 执行编译过程 一旦完成了上述准备工作,则可以正式进入编译阶段。这一步可能会花费一些时间,请耐心等待直至结束。 ```bash make && make install ``` #### 设置环境变量 为了让系统能够识别新安装PHP 可执行程序路径,建议创建软链接以便于全局调用。 ```bash ln -s /usr/local/php/bin/php /usr/bin/php ln -s /usr/local/php/sbin/php-fpm /usr/sbin/php-fpm ``` #### 初始化服务脚本 复制默认的服务启动模板到指定位置,并赋予可执行权限。 ```bash cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm ``` #### 创建配置文件夹及初始化配置 建立专门用于存放 PHP 和 FPM 的配置文件夹结构;同时利用内置样例生成初始配置文档。 ```bash mkdir -p /etc/php cp php.ini-production /etc/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp /usr/local/php/etc/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf ``` #### 启动 PHP-FPM 并设为开机自启 最后一步就是开启 PHP FastCGI Process Manager (FPM),并且注册成系统的守护进程以实现自动重启功能。 ```bash service php-fpm start chkconfig --add php-fpm chkconfig php-fpm on ``` 通过以上流程即可顺利完成基于 Linux 发行版的手工构建 PHP 运行时环境的任务[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值