源代码编译安装 PHP5.5.0,解决curl_exec訪问HTTPS返回502错误的问题-阿里云开发者社区

开发者社区> eddie小英俊> 正文

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

简介:
+关注继续查看

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
CentOS6.9源码编译安装redis和php-redis扩展
这篇笔记记录了在CentOS6.9中源码编译安装redis,开机启动,和源码编译安装php-redis扩展的过程
1203 0
9、web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解
封装模块 #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib from urllib import request import json import random import re import urllib.
2522 0
Windows下CMD中文乱码问题解决方法,设置代码页65001后仍然乱码
原文地址: http://blog.csdn.net/u011250882/article/details/48136883 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。  如果想正确显示UTF-8
6625 0
gradle编译遇到 org/apache/commons/codec/binary/Base64错误解决
### gradle编译遇到 org/apache/commons/codec/binary/Base64错误解决 android studio升级到gradle 版本升级到2.14.1, android build tools升级到 2.2.2后出现 `org/apache/commons/codec/binary/Base64` 错误。 错误信息是 ``` 14:47:26.2
9485 0
925
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载