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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

     近期碰到一个奇怪的问题。 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,如需转载请自行联系原作者


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
弹性计算 应用服务中间件 Apache
ECS配置问题之输入ip无法访问如何解决?
ECS配置指的是对阿里云Elastic Compute Service(弹性计算服务)实例的硬件和软件资源进行设置的过程;本合集将详述如何选择合适的ECS配置、调整资源配比以及优化实例性能,以满足不同应用场景的需求。
|
4月前
|
安全 小程序 PHP
PHP代码审计(七)Rips源代码审计系统使用教程
上一篇中提到的Seay源代码审计系统是由C#编写的winform程序,现在已经停止更新了,但是,还是比较好用的。 PHP代码审计还有另一个工具,也是一个神器Rips
146 0
|
4月前
|
安全 小程序 PHP
PHP代码审计(六)Seay源代码审计系统使用教程
www.cnseay.com/ 当然,这个已经不能访问了。 软件的版本比较早,需要.NET framework3.5框架,我这里是软件启动的时候自动提醒安装,如果没有自动提醒,那么你需要手动安装.NET frameWork3.5框架,否则,程序应该是没有办法运行。
234 0
|
2天前
|
应用服务中间件 网络安全 Apache
解决跨域和https不能访问的问题
【4月更文挑战第10天】解决跨域和https不能访问的问题
18 2
解决跨域和https不能访问的问题
|
12天前
|
应用服务中间件 网络安全 nginx
nginx配置https访问
nginx配置https访问
25 0
|
22天前
|
应用服务中间件 nginx
nginx配置https和直接访问静态文件的方式
nginx配置https和直接访问静态文件的方式
27 3
|
30天前
|
PHP 数据安全/隐私保护
PHP页面如何实现设置独立访问密码
PHP网页如果需要查看信息必须输入密码,验证后才可显示出内容的代码如何实现? 对某些php页面设置单独的访问密码,如果密码不正确则无法查看内容,相当于对页面进行了一个加密
12 2
PHP页面如何实现设置独立访问密码
|
6月前
|
域名解析 网络协议 前端开发
网站如何改成HTTPS访问
网站如何改成HTTPS访问
136 1