centos php curl(centos7安装php环境)

centos 7.2 系统 php7.0.12的 curl 扩展怎么开启

curl是一个广泛使用的用来上传和下载的命令行工具,当然严格来讲,它还可以有别的用途。对于测试来讲,它是Web相关测试非常实用的工具,包括debugging,使用起来非常方便。

下面直接进入主题:

1、直接进入到php源码包中找到原先安装PHP的源码包文件①;

2、直接进入/usr/package/php-7.1.10/ext/curl目录②;

cd/usr/package/php-7.1.10/ext/curl

3、通过phpize工具生成configure文件③;

/usr/local/php/bin/phpize

4、将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系④;

./configure--with-php-config=/usr/local/php/bin/php-config

5、编译程序并安装文件;

make&&make install

6、在php的配置文件php.ini最后一行添加extension=curl.so即可。

相关解释(带圆圈的数字编号)可参考:

Linux中使用curl命令访问https站点4种常见错误和解决方法

每一种客户端在处理https的连接时都会使用不同的证书库。IE浏览器和FireFox浏览器都可以在本浏览器的控制面板中找到证书管理器。在证书管理器中可以自由添加、删除根证书。

而Linux的curl使用的证书库在文件“/etc/pki/tls/certs/ca-bundle.crt”中。(CentOS)

以下是curl在访问https站点时常见的报错信息

1.Peer’s Certificate issuer is not recognized

复制代码代码如下:

[root@ip-172-31-32-208 Nginx]# curl

curl:(60) Peer's Certificate issuer is not recognized.

more details here:

此种情况多发生在自签名的证书,报错含义是签发证书机构未经认证,无法识别。

解决办法是将签发该证书的私有CA公钥cacert.pem文件内容,追加到/etc/pki/tls/certs/ca-bundle.crt。

我们在访问12306.cn订票网站时也报了类似的错误。

复制代码代码如下:

[root@ip-172-31-32-208~]# curl

curl:(60) Peer's certificate issuer has been marked as not trusted by the user.

More details here:

2.SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

复制代码代码如下:

[root@GO-EMAIL-1 aa]# curl

curl:(60) SSL certificate problem, verify that the CA cert is OK. Details:

error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

More details here:

此问题多是由于本地CA证书库过旧,导致新签发证书无法识别。

经排查,github.com证书是由GTE CyberTrust Root签发,现行证书时间是:

1.不早于(1998/8/13 0:29:00 GMT)

2.不晚于(2018/8/13 23:59:00 GMT)

而在我们的Redhat5.3系统中ca-bundle.crt文件发现,GTE CyberTrust Root的时间已经过期。

复制代码代码如下:

Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root

Validity

Not Before: Feb 23 23:01:00 1996 GMT

Not After: Feb 23 23:59:00 2006 GMT

解决办法是更新本地CA证书库。

方法一:

下载替换/etc/pki/tls/certs/ca-bundle.crt

方法二:

使用update-ca-trust更新CA证书库。(CentOS6,属于ca-certificates包)

3.unknown message digest algorithm

复制代码代码如下:

[root@WEB_YF_2.7~]#curl

curl:(35) error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm

此问题多由证书本地openssl不能识别SSL证书签名算法所致。www.alipay.com使用了SHA-256 RSA加密算法。而openssl在OpenSSL 0.9.8o才加入此算法。

解决办法是升级本地openssl。

在我的操作系统RedHat5.3中,yum升级openssl到openssl-0.9.8e-22.el5就可以识别SHA-256算法。原因是Redhat每次都是给0.9.8e打补丁,而不是直接更换版本。在srpm包中我找到了这个补丁。

复制代码代码如下:

Summary: The OpenSSL toolkit

Name: openssl

Version: 0.9.8e

...

Patch89: openssl-fips-0.9.8e-ssl-sha256.patch

4.JAVA和PHP的问题

java和php都可以编程来访问https网站。例如httpclient等。

其调用的CA根证书库并不和操作系统一致。

JAVA的CA根证书库是在 JRE的$JAVA_HOME/jre/lib/security/cacerts,该文件会随着JRE版本的升级而升级。可以使用keytool工具进行管理。

PHP这边我没有进行测试,从php安装curl组件的过程来看,极有可能就是直接采用的操作系统curl一直的数据。

当然PHP也提供了 curl.cainfo参数(php.ini)来指定CA根证书库的位置。

阿里云上的centos 7.2怎么yum安装php 5.6

因之前通过网易的 centos镜像,将阿里云的 centos升级到最新版了,乘自己的项目尚未开始正式开发,遂将所有的相应环境都升级到最高。

查看 centos版本:

[root@iZ23d~]# cat/etc/centos-release

CentOS Linux release 7.2.1511(Core)

1、删除之前的 php版本:

[root@iZ23d~]# yum remove php* php-common

Loaded plugins: langpacks

Repository base is listed more than once in the configuration

Repository updates is listed more than once in the configuration

Repository extras is listed more than once in the configuration

Repository centosplus is listed more than once in the configuration

No Match for argument: php-5.4.16

No Match for argument: php-5.4.16.tar.gz

No Match for argument: php-7.0.1RC1

No Match for argument: php-7.0.1RC1.tar.gz

No Match for argument: phpMyAdmin-4.4.0.tar.gz

No Match for argument: php-common

No Packages marked for removal

2、rpm安装 Php7相应的 yum源:

[root@iZ23d~]# rpm-Uvh

Retrieving

warning:/var/tmp/rpm-tmp.LhJKKR: Header V4 RSA/SHA1 Signature, key ID 62e74ca5: NOKEY

Preparing...################################# [100%]

package webtatic-release-7-3.noarch is already installed

3、直接yum安装php7:

[root@iZ23d~]# yum install php70w

Loaded plugins: langpacks

Repository base is listed more than once in the configuration

Repository updates is listed more than once in the configuration

Repository extras is listed more than once in the configuration

Repository centosplus is listed more than once in the configuration

Resolving Dependencies

--> Running transaction check

。。。【省略】

Warning: RPMDB altered outside of yum.

Installing: php70w-common-7.0.0-1.w7.x86_64 1/3

Installing: php70w-cli-7.0.0-1.w7.x86_64 2/3

Installing: php70w-7.0.0-1.w7.x86_64 3/3

Verifying: php70w-7.0.0-1.w7.x86_64 1/3

Verifying: php70w-common-7.0.0-1.w7.x86_64 2/3

Verifying: php70w-cli-7.0.0-1.w7.x86_64 3/3

Installed:

php70w.x86_64 0:7.0.0-1.w7

Dependency Installed:

php70w-cli.x86_64 0:7.0.0-1.w7 php70w-common.x86_64 0:7.0.0-1.w7

Complete!

4、检查 php版本:

[root@iZ23d~]# php-v

PHP 7.0.0(cli)(built: Dec 2 2015 20:42:32)( NTS)

Copyright(c) 1997-2015 The PHP Group

Zend Engine v3.0.0, Copyright(c) 1998-2015 Zend Technologies

[root@iZ23d2e6hoqZ~]#

以上显示安装成功!

5、重启 Apache,查看 phpinfo:

[root@iZ23d~]# systemctl restart httpd.service

检查phpinfo:

PHP Version 7.0.0

SystemLinux iZ23d 3.10.0-229.11.1.el7.x86_64#1 SMP Thu Aug 6 01:06:18 UTC 2015 x86_64

Build DateDec 2 2015 20:43:38

Server APIApache 2.0 Handler

Virtual Directory Supportdisabled

Configuration File(php.ini) Path/etc

Loaded Configuration File/etc/php.ini

Scan this dir for additional.ini files/etc/php.d

Additional.ini files parsed/etc/php.d/bz2.ini,/etc/php.d/calendar.ini,/etc/php.d/ctype.ini,/etc/php.d/curl.ini,/etc/php.d/exif.ini,/etc/php.d/fileinfo.ini,/etc/php.d/ftp.ini,/etc/php.d/gettext.ini,/etc/php.d/gmp.ini,/etc/php.d/iconv.ini,/etc/php.d/json.ini,/etc/php.d/phar.ini,/etc/php.d/shmop.ini,/etc/php.d/simplexml.ini,/etc/php.d/sockets.ini,/etc/php.d/tokenizer.ini,/etc/php.d/xml.ini,/etc/php.d/zip.ini

PHP API20151012

PHP Extension20151012

Zend Extension320151012

Zend Extension BuildAPI320151012,NTS

PHP Extension BuildAPI20151012,NTS

Debug Buildno

Thread Safetydisabled

Zend Signal Handlingdisabled

Zend Memory Managerenabled

Zend Multibyte Supportdisabled

IPv6 Supportenabled

DTrace Supportenabled

Registered PHP Streamshttps, ftps, compress.zlib, php, file, glob, data, http, ftp, compress.bzip2, phar, zip

Registered Stream Socket Transportstcp, udp, unix, udg, ssl, sslv3, sslv2, tls, tlsv1.0, tlsv1.1, tlsv1.2

Registered Stream Filterszlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, bzip2.*, convert.iconv.*

This program makes use of the Zend Scripting Language Engine:

Zend Engine v3.0.0, Copyright(c) 1998-2015 Zend Technologies

Configuration

apache2handler

Apache VersionApache/2.4.6(CentOS)

Apache API Version20120211

Server Administratorxxxxxx@xxxxxx.com

Hostname:Portxxxx.xxxxx.xxx:0

User/Groupapache(48)/48

Max RequestsPer Child: 0- Keep Alive: on- Max Per Connection: 100

TimeoutsConnection: 60- Keep-Alive: 15

Virtual ServerYes

Server Root/etc/httpd

Loaded Modulescore mod_so http_core mod_access_compat mod_actions mod_alias mod_allowmethods mod_auth_basic mod_auth_digest mod_authn_anon mod_authn_core mod_authn_dbd mod_authn_dbm mod_authn_file mod_authn_socache mod_authz_core mod_authz_dbd mod_authz_dbm mod_authz_groupfile mod_authz_host mod_authz_owner mod_authz_user mod_autoindex mod_cache mod_cache_disk mod_data mod_dbd mod_deflate mod_dir mod_dumpio mod_echo mod_env mod_expires mod_ext_filter mod_filter mod_headers mod_include mod_info mod_log_config mod_logio mod_mime_magic mod_mime mod_negotiation mod_remoteip mod_reqtimeout mod_rewrite mod_setenvif mod_slotmem_plain mod_slotmem_shm mod_socache_dbm mod_socache_memcache mod_socache_shmcb mod_status mod_substitute mod_suexec mod_unique_id mod_unixd mod_userdir mod_version mod_vhost_alias mod_dav mod_dav_fs mod_dav_lock mod_lua prefork mod_proxy mod_lbmethod_bybusyness mod_lbmethod_byrequests mod_lbmethod_bytraffic mod_lbmethod_heartbeat mod_proxy_ajp mod_proxy_balancer mod_proxy_connect mod_proxy_express mod_proxy_fcgi mod_proxy_fdpass mod_proxy_ftp mod_proxy_http mod_proxy_scgi mod_proxy_wstunnel mod_ssl mod_systemd mod_cgi mod_perl mod_php7

以上显示 php7安装成功!

阅读剩余
THE END