源码编译安装 PHP,请教关于./configure 的问题
背景#
- 昨天想转 slim 框架为 lumen 5.3.1 版做 API 开发,lumen 官网上标明 PHP 版本需要 >=5.6.4,查了一下 PHP 官网的稳定版本,主要是 5.6.22 和 7.0.11,于是就下载了 PHP 7.0.11 的源码版本
- 在
./configure [option]
的时候,以前都是一成不变的复制粘贴,从来没有思考过 ./configure 后面选项的意义,趁这次重新编译安装,正好弄清楚一下
laravel-china 官网上目前标明的 lumen 5.3.1 对 PHP 版本的要求 >=5.5.9 是不正确的,php artisan 的时候,会无法识别 php 里面的可变参数
...
语法。昨晚已私聊管理员龙哥,大家也可以注意一下这个 PHP 新语法
安装细节#
我在测试安装 php 的 openssl 模块的时候,分别使用了以下方式:
./configure
./configure --with-openssl
./configure --with-openssl=/usr/local
./configure --with-openssl=/usr/local/xxx
结果出现了不同的结果
- 第一种不会安装 openssl 模块
- 第二种可以正常安装 openssl 模块
- 第三种可以正常安装 openssl 模块 (我的电脑存在 /usr/local/include/openssl/evp.h)
- 第四种会报错:
configure: error: Cannot find OpenSSL's evp.h
(我的电脑 /usr/local/xxx 是空目录)
问题#
由于第二种和第三种都可以安装成功。
- 假设指定了路径是用于调用系统自带的函数库,那为什么我检查./configure 文件的源码,源码会判断只有
./configure --with-openssl=shared
和./configure --with-openssl=shared[,path]
才算是调用系统自带的函数库呢? - 假设指定了路径是用于创建不依赖于系统的独立函数库,那为什么第四种方式还是会报错呢?
- ./configure 源码里面进行了四种判断,还麻烦大神系统地分析一下这四种情况分别对应什么需求,非常感谢 ^_^
./configure 源码四种判断:
./configure --with-openssl=shared
./configure --with-openssl=shared[,path]
./configure
./configure --with-openssl
附录#
./configure 文件源码片段:
推荐文章: