ホームページ >バックエンド開発 >PHPチュートリアル >HTTPS にアクセスするときに、curl_exec が 502 例外を返す問題を解決するには、ソース コードから PHP5.5.0 をコンパイルしてインストールします。

HTTPS にアクセスするときに、curl_exec が 502 例外を返す問題を解決するには、ソース コードから PHP5.5.0 をコンパイルしてインストールします。

WBOY
WBOYオリジナル
2016-06-13 12:16:101345ブラウズ

HTTPS にアクセスすると、curl_exec が 502 エラーを返す問題を解決するために、ソース コードから PHP5.5.0 をコンパイルしてインストールします

最近、PHP が Curl_exec を使用して HTTPS Web ページにアクセスすると、502 エラーが返されるという奇妙な問題に遭遇しました。 HTTP Web ページにアクセスする場合は問題ありません。 echo phpinfo() ; View を使用します。openssl をサポートし、curl をサポートします。インターネット上で多くの情報を見つけましたが、解決策はありません。


[[email protected] ~]# 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 ライブラリに関連している必要があります。 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 が見つからないというエラーが発生しました

# yum install libXpm-devel //x は大文字であることに注意してください
# yum install libXext -devel // x は大文字であることに注意してください

2. gmp.h が見つかりませんというエラーが発生しました

#yum install gmp

#yum install gmp-devel

3. エラーが発生しました: utf8_mime2text() には新しい署名がありますが、U8T_CANONICAL がありません。これは発生しません

#yum install libc-client-devel

4. エラー: ICU プレフィックスまたは /usr/bin/icu-config を検出できませんでした

#yum install libicu*

#yum install icu*

5エラーが発生しました: ODBC ヘッダー ファイル '/usr/include/sqlext.h' が見つかりません

#yum install unixODBC-devel

6. エラーが発生しました: pspell が見つかりません

#yum install aspell-devel

7. エラー: /usr /usr/local /usr /opt のどこにも recode.h が見つかりません。

#yum install recode

#yum install recode-devel

8. エラー: net-snmp-config バイナリが見つかりません

#yum install net-snmp-devel

9. エラー: libtidy

#yum install libtidy-devel

php がインストールされています。php ページをテストしました。問題は依然として同じです。最後に詳しく調べました。phpinfo() 関数で表示されるバージョンは 5.2.17 で、私がインストールしたバージョンは 5.5 .0 です。 nginx サーバーはまだ

の古い php を使用しており、コンパイルしてインストールした最新の php は有効になっていませんでした。検索後、古い php のディレクトリは /usr/local/bin/php で、新しい php がインストールされました。 php ディレクトリは /usr/bin/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

# ソースプロファイル プロファイルファイルをリロードします

最後に php ファイルをテストします。curl_exec は https にアクセスできますファイルを作成してデータを取得します。





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。