发布于 2015-03-22 22:55:10 | 677 次阅读 | 评论: 1 | 来源: PHPERZ

这里有新鲜出炉的PHP教程,程序狗速度看过来!

PHP开源脚本语言

PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。


错误描述

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   --with-config-file-path=/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 --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip \  
--enable-soap --without-pear --with-gettext --with-mime-magic  
  
# 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 服务器使用的还是

老的 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 文件, 并取到数据了。



最新网友评论  共有(1)条评论 发布评论 返回顶部
bbio 发布于2015-04-01 16:54:01
看不懂啊,
支持(0)  反对(0)  回复

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务