最近碰到一個奇怪的問題, PHP使用 curl_exec 訪問 HTTPS 網(wǎng)頁時, 返回502錯誤, 訪問HTTP網(wǎng)頁時沒有問題, 用 echo phpinfo() ; 查看, 支持openssl, 支持curl, 網(wǎng)上找了好多資料, 都沒解決。
[root@www ~]# php -VFailed loading /usr/local/zend/ZendOptimizer.so: /usr/local/zend/ZendOptimizer.so: undefined symbol: zend_throw_exception_internalPHP Warning: PHP Startup: memcache: Unable to initialize moduleModule compiled with module API=20060613PHP compiled with module API=20090626These options need to match in Unknown on line 0PHP 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庫有關(guān)。 重新安裝了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() 函數(shù)顯示的版本是 5.2.17, 而我安裝的是 5.5.0, 顯然 nginx 服務(wù)器使用的還是
老的 php, 沒有啟用我最新編譯安裝的 php, 查找了一下, 老的 php 的目錄是 /usr/local/bin/php, 而我新安裝的php目錄是 /usr/bin/php
為何不用最新的php呢, 顯然與 html' target='_blank'>環(huán)境變量PATH有關(guān) , 執(zhí)行命令 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 文件, 并取到數(shù)據(jù)了。
PHP編程鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點
疑難解答
圖片精選