源代码编译安装 PHP5.5.0,解决curl_exec訪问HTTPS返回502错误的问题

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

     近期碰到一个奇怪的问题。 PHP使用 curl_exec 訪问 HTTPS 网页时, 返回502错误, 訪问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看。 支持openssl, 支持curl。 网上找了好多资料。 都没解决。


[root@www ~]# php -V
Failed loading /usr/local/zend/ZendOptimizer.so:  /usr/local/zend/ZendOptimizer.so: undefined symbol: zend_throw_exception_internal
PHP Warning:  PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match
 in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/openssl.so' 
- /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/openssl.so: undefined symbol: zend_parse_parameters_none in Unknown on line 0


用 #php  -V 查看, 提示  openssl.so  载入失败, 看来 肯定与openssl库有关。  又一次安装了openssl库, 问题依然。

原因是openssl库用到了 zend。 看上面的提示, 显示zend库也报错。 要处理预计还得又一次安装zend库。 麻烦。 算了, 不让直接用源代码编译一次 php。 说干就干吧。

        

下载了 PHP 5.5.0.tar.gz  

./configure '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--with-mysql=/usr/local/mysql' \
'--with-mysqli=/usr/local/mysql/bin/mysql_config' '--with-iconv-dir' '--with-freetype-dir' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' \
'--with-libxml-dir=/usr' '--enable-xml' '--disable-rpath' '--enable-discard-path' '--enable-magic-quotes' '--enable-safe-mode' '--enable-bcmath' \
'--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--with-curl' '--with-curlwrappers' '--enable-mbregex' '--enable-fastcgi' \
'--enable-fpm' '--enable-force-cgi-redirect' '--enable-mbstring' '--with-mcrypt' '--enable-ftp' '--with-gd' '--enable-gd-native-ttf' '--with-openssl' \
'--enable-exif' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--without-pear' '--with-gettext' \
'--with-mime-magic' php_sapis="cli cgi"


# make ZEND_EXTRA_LIBS='-liconv' 

# make test

# make  install

须要指定的文件夹 一个是mysql的安装文件夹, 一个是  mysql_config 所在的文件夹。



安装过程中可能会碰到一些错误, 以下是我安装碰到的,环境不一样, 每台机器碰到的问题也会不一样。


1、 碰到错误  xpm.h not found

# yum  install libXpm-devel //注意x为大写
# yum  install libXext-devel //注意x为大写

2、碰到错误  gmp.h not found

#yum install gmp

#yum install gmp-devel

3、碰到错误 error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen

#yum install libc-client-devel

4、碰到错误  error: Unable to detect ICU prefix or /usr/bin/icu-config failed

#yum   install  libicu*

#yum   install   icu*

5、碰到错误  error: ODBC header file '/usr/include/sqlext.h' not found

#yum install unixODBC-devel

6、碰到错误   error: Cannot find pspell

#yum install aspell-devel

7、碰到错误    error: Can not find recode.h anywhere under /usr /usr/local /usr /opt.

#yum install recode

#yum install recode-devel

8、碰到错误  error: Could not find net-snmp-config binary

#yum install net-snmp-devel

9、碰到错误   error: Cannot find libtidy

#yum install libtidy-devel

php 安装完成了 。 測试 了一下 php 页面, 问题依然, 终于细致看了一下。   phpinfo() 函数显示的版本号是  5.2.17,  而我安装的是  5.5.0。 显然 nginx server使用的还是

老的 php。 没有启用我最新编译安装的 php,  查找了一下, 老的 php 的文件夹是   /usr/local/bin/php,  而我新安装的php文件夹是  /usr/bin/php 


为何不用最新的php呢, 显然与  环境变量PATH有关 , 运行命令  env  , 看到 

PATH=/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 

我们能够改动  /etc/profile 文件 。 把文件最后一行 :


export PATH=/usr/local/mysql/bin:$PATH

改动为

export PATH=/usr/local/mysql/bin:/usr/bin:$PATH


然后

# cd /etc

#  source  profile   又一次载入 profile 文件

最后再測试  php 文件,  curl_exec 能够訪问 https 文件。 并取到数据了。







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5057602.html,如需转载请自行联系原作者


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
|
11天前
|
Web App开发 算法 应用服务中间件
nginx开启局域网https访问
【10月更文挑战第22天】为了调试WebRTC功能,需要在局域网内搭建HTTPS协议。具体步骤包括:在已部署Nginx和安装OpenSSL的环境中生成私钥、证书签名请求和自签名证书;将生成的文件放置到Nginx的证书目录并修改Nginx配置文件,最后重启Nginx服务。注意,自签名证书不受第三方机构认可,如需正式使用,需向CA申请签名。
|
15天前
|
安全 网络安全 数据安全/隐私保护
政务内网实现https访问教程
政务内网实现HTTPS访问需经过多个步骤:了解HTTPS原理,选择并申请适合的SSL证书,配置SSL证书至服务器,设置端口映射与访问控制,测试验证HTTPS访问功能,注意证书安全性和兼容性,定期备份与恢复。这些措施确保了数据传输的安全性,提升了政务服务的效率与安全性。
|
10天前
|
安全 网络安全 数据安全/隐私保护
内网IP地址实现HTTPS加密访问教程
在内网环境中,为确保数据传输的安全性,绑定SSL证书搭建HTTPS服务器至关重要。本文介绍了内网IP地址的前期准备、申请SSL证书的步骤以及客户端配置方法。具体包括选择合适的CA、注册账号、提交申请、下载证书,并在客户端导入根证书,确保通信数据的安全加密。推荐使用JoySSL提供的技术解决方案,确保内网设备通信安全。
内网IP地址实现HTTPS加密访问教程
|
1月前
|
存储 网络安全 对象存储
缺乏中间证书导致通过HTTPS协议访问OSS异常
【10月更文挑战第4天】缺乏中间证书导致通过HTTPS协议访问OSS异常
87 4
|
1月前
|
存储 缓存 安全
https访问提示不安全,证书密钥验证上如何解决
【10月更文挑战第4天】访问提示不安全,证书密钥验证上如何解决
254 2
|
1月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
45 2
|
1月前
|
编解码 JSON 安全
使用search-guard加固安全为https访问
使用search-guard加固安全为https访问
|
2月前
进入靶场,出现一张照片,右击查看源代码,发现有一个注释的source.php文件
这段代码实现了一个网站上弹出的促销海报动画效果,包含一个关闭按钮。当促销海报弹出时,会在三秒后开始抖动一两下。海报使用固定定位居中显示,带有阴影和圆角,关闭按钮位于右上角。可以通过修改时间参数调整弹出时间。
19 0