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 にアクセスできますファイルを作成してデータを取得します。