linuxphpopenssl
1. linux环境下php5.6.30安装openssl扩展报错,麻烦各位大神看看哪儿的问题
安装PHP成功后,进入 PHP 的源码包
#cd /usr/local/src/php-5.6.8
进入openssl扩展模块的目录
#cd ext/openssl
在当前目录下执行
# mv config0.m4 config.m4
#/usr/local/php/bin/phpize //这里为你自己的phpize路径,如果找不到,可以用whereis phpize查找
#./configure --help |grep openssl 查看安装openssl扩展需要的相关选项
#./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config 描红的是安装每个扩展的必选项
#make
#make install
2. php怎么开启openssl模块
php开启openssl的方法,大多数情况下openssl是没有开启的,要想启用需要进行下简单的设置
windows下开启方法:
1: 首先检查php.ini中;extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘;', 如果不存在这行,那么添加extension=php_openssl.dll。
2: 讲php文件夹下的: php_openssl.dll, ssleay32.dll, libeay32.dll 3个文件拷贝到 WINDOWSsystem32 文件夹下。
3: 重启apache或者iis(iisreset /restart)
至此,openssl功能就开启了。
Linux下开启方法:
我使用的是锦尚数据的云主机,PHP版本:5.2.14
下面方案就以我的主机为例讲解为PHP添加openssl模块支持。
网上一些答案说要重新编译PHP,添加configure参数,增加openssl的支持。这里讲一个不需要重新编译的方法。
如果服务器上存在PHP安装包文件最好,如果已经删除,去下载和phpinfo页面显示版本一样的PHP安装文件,我这里是 php-5.2.14.tar.gz
推荐去搜狐镜像下载,网易镜像没有找到。地址为: http://mirrors.sohu.com/php/
用ssh工具连接到主机。
#下载到/var/www/php5目录下
cd/var/www/php5
wgethttp://mirrors.sohu.com/php/php-5.2.14.tar.gz
#解压
tarzxvfphp-5.2.14.tar.gz
#进入PHP的openssl扩展模块目录
cdphp-5.2.14/ext/openssl/
/var/www/php5/bin/phpize#这里为你自己的phpize路径,如果找不到,使用whereisphpize查找
#执行后,发现错误无法找到config.m4,config0.m4就是config.m4。直接重命名
mvconfig0.m4config.m4
/var/www/php5/bin/phpize
./configure--with-openssl--with-php-config=/var/www/php5/bin/php-config
make
makeinstall
#安装完成后,会返回一个.so文件(openssl.so)的目录。在此目录下把openssl.so文件拷贝到你在php.ini中指定的extension_dir下(在php.ini文件中查找:extension_dir=),我这里的目录是var/www/php5/lib/php/extensions
#编辑php.ini文件,在文件最后添加
extension=openssl.so
#重启Apache即可
/usr/local/apache2/bin/apachectlrestart
3. 如何在linux使用md5对其进行加密
这里以字符串123456为例子,它的md5密文值为:
这里以1.txt为需要被加密的文件。
一、 用oppnssl md5 加密字符串和文件的方法。
1. oppnssl md5 加密字符串的方法
a.手动输入命令及过程如下:
#openssl //在终端中输入openssl后回车。
OpenSSL> md5 //输入md5后回车
123456 //接着输入123456,不要输入回车。然后按3次ctrl+d。
123456 //123456后面的就是密文了
解释:为何在输入123456后不回车呢?
是因为openssl默认会把回车符当做要加密的字符串中的一个字符,所以得到的结果不同。如果你输入123456后回车,在按2次ctrl+d。得到的结果是:
OpenSSL> md5
123456
//因为openssl不忽略回车符导致的
b.或者直接用管道命令
# echo -n 123456 | openssl md5 //必须要有-n参数,否则就不是这个结果了。
解释:为何要加-n这个参数?
-n就表示不输入回车符,这样才能得到正确的结果。如果你不加-n,那么结果和前面说的一样为:
//因为openssl不忽略回车符导致的
2.用openssl加密文件。
#openssl md 5 -in 1.txt
##################################################3
Openssl其他相关加密的命令参数:引自:实用命令:利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密 收藏
一. 利用openssl命令进行BASE64编码解码(base64 encode/decode)
1. BASE64编码命令
对字符串‘abc’进行base64编码:
# echo abc | openssl base64
YWJjCg== (编码结果)
如果对一个文件进行base64编码(文件名t.txt):
# openssl base64 -in t.txt
2. BASE64解码命令
求base64后的字符串‘YWJjCg==’的原文:
# echo YWJjCg== | openssl base64 -d
abc (解码结果)
如果对一个文件进行base64解码(文件名t.base64):
# openssl base64 -d -in t.base64
二. 利用openssl命令进行md5/sha1摘要(digest)
1. 对字符串‘abc’进行md5摘要计算:echo abc | openssl md5
若对某文件进行md5摘要计算:openssl md5 -in t.txt
2. 对字符串‘abc’进行sha1摘要计算:echo abc | openssl sha1
若对某文件进行sha1摘要计算:openssl sha1 -in t.txt
三. 利用openssl命令进行AES/DES3加密解密(AES/DES3 encrypt/decrypt)
对字符串‘abc’进行aes加密,使用密钥123,输出结果以base64编码格式给出:
# echo abc | openssl aes-128-cbc -k 123 -base64
U2FsdGVkX18ynIbzARm15nG/JA2dhN4mtiotwD7jt4g= (结果)
对以上结果进行解密处理:
# echo U2FsdGVkX18ynIbzARm15nG/JA2dhN4mtiotwD7jt4g= | openssl aes-128-cbc -d -k 123 -base64
abc (结果)
若要从文件里取原文(密文)进行加密(解密),只要指定 -in 参数指向文件名就可以了。
进行des3加解密,只要把命令中的aes-128-cbc换成des3就可以了。
注:只要利用openssl help就可以看到更多的安全算法了。
###############################################
二、 利用php的md5函数加密字符串
#touch a.php //创建a.php文件
#vi a.php //用vi 编辑a.php文件
将<?php echo md5(123456); ?>输入进去后保存
#php a.php //运行a.php文件
显示:
三、 利用md5sum命令
A.在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。可以用下面的命令来获取md5sum命令帮助 man md5sum
#md5sum –help
有个提示:“With no FILE, or when FILE is -, read standard input.”翻译过来就是“如果没有输入文件选项或者文件选项为 - ,则从标砖读取输入内容”,即可以直接从键盘读取字符串来加密。
利用md5sum加密字符串的方法
# md5sum //然后回车
123456 //输入123456.然后按两次ctrl+d.
显示:
123456 红色代表加密后的值
还可以用管道命令:
#echo -n '123123' | md5sum
或者写成md5加密脚本,名字叫md5.sh,
将以下内容复制进脚本里:
#!/bin/bash
echo -n $1 | md5sum | awk '{print $1}'
保存后,给脚本执行权限。
#sh md5.sh 123456
显示:
B.其实也可以将文本放入文本文件,然后用md5sum 加密改文本,也可以得到字符串加密的值。过程如下:
#touch a.txt
#echo -n 123456 > a.txt //将123456写进文本文件,不能丢了 –n参数,避免回车符干扰
#md5sum a.txt
显示: a.txt
ctrl+d有两个含义:
一是向程序发送文件输入结束符EOF。
二是向程序发送exit退出指令。程序收到信号后具体动作是结束输入、然后等待,还是直接退出,那就要看该程序捕获信号后是如何操作的了。
md5sum属于第一个含义。两次strl+d了,第一次读取EOF指令,再次捕获就会当成exit指令。而shell一类的程序,会直接把ctrl+d解析为退出指令。
4. linux php安装扩展 openssl问题 libssl not found!
解决这个错误很简单,只要将openssl-dev 包装上即可。
yum -y install openssl-devel
然后再编译就好了
5. linux系统怎么样在不重新编译php增加open ssl扩展
今天使用QQ登录时, 遇到了不能跳转的问题。发现是php不支持openssl.
又不想重新编译php, 网上多方寻找。终于找到解决方案。 记录如下:
#下面是php的安装目录
/usr/local/php5/bin/
#切换到php安装目录的 etx/openssl目录
cd /php-5.3.8p/ext/openssl
#查看openssl目录下有个config0.m4,把config0.m4改名为config.m4。
cp config0.m4 config.m4
#依次执行:
/usr/local/php5/bin/phpize
./configure –with-openssl –with-php-config=/usr/local/php5/bin/php-config
make && make install
#然后找到php.ini所在位置 打开 extension_dir(如果没有则自行添加), 同时添加 extension = "openssl.so"
#重启服务器 即可
#openssl 查看方法:
/usr/local/php5/bin/php -i |grep openssl
6. linux环境php.ini已开启openssl但phpinfo里没有
你的配置其实是无效的, 因为你没编译openssl模块
如果是centsos系统, 请先安装openssl类库
$ yum install openssl-devel -y
编译php时, 加上 --with-openssl,你看过后很简单吧以后不会可以向我一样经常到后盾人找找相关教材看看就会了,希望能帮到你,给个采纳吧谢谢@(*^ェ^)@
7. linux环境php.ini已开启openssl但phpinfo里没有
从你的情况看,既然phpinfo已经显示可以支持openssl,那么应该不是环境的问题了。感觉像是你cli和fpm配置不一致,很多人都犯过这种错误,配置好了fpm,但是用cli执行本地命令行脚本是出现各种异常。一般nginx+fpm这种环境,建议配置好fpm后,用测试通过的php.ini覆盖cli的php.ini。
8. 如何在linux下安装多个不同版本的PHP
Linux (测试环境 Ubuntu 12.04 Server X86_64)
1. 安装编译工具及所需类库
$ sudo apt-get install build-essential gcc g++ autoconf libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev bzip2 libbz2-dev openssl libssl-dev curl libcurl4-openssl-dev libpcre3 libpcre3-dev libevent-1.4-2 libevent-dev libmcrypt4 libmcrypt-dev mcrypt libltdl-dev libldap2-dev libsasl2-dev libmhash-dev libc-client2007e libc-client2007e-dev
2. 安装Mysql
$ sudo apt-get install mysql-server libmysqlclient-dev
3. 安装PHP
Linux下多版本PHP共存需要自己手工编译安装。
下载PHP源文件到/opt/src目录
$ mkdir /opt/src
$ cd /opt/src
$ wget http://museum.php.net/php5/php-5.2.17.tar.bz2 -O php-5.2.17.tar.bz2
$ wget http://cn2.php.net/get/php-5.3.28.tar.bz2/from/this/mirror -O php-5.3.28.tar.bz2
$ wget http://cn2.php.net/get/php-5.4.29.tar.bz2/from/this/mirror -O php-5.4.29.tar.bz2
$ wget http://cn2.php.net/get/php-5.5.14.tar.bz2/from/this/mirror -O php-5.5.14.tar.bz2
创建PHP各版本安装目录
$ mkdir -p /opt/php/{5217,5328,5429,5514}
安装PHP 5.2.17
$ cd /opt/src
$ tar -xvjf php-5.2.17.tar.bz2
$ cd php-5.2.17
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/libpng.so
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libkrb5.so /usr/lib/libkrb5.so
$ wget -O debian_patches_disable_SSLv2_for_openssl_1_0_0.patch “https://bugs.php.net/patch-display.php?bug_id=54736&patch=debian_patches...”
$ patch -p1 < debian_patches_disable_SSLv2_for_openssl_1_0_0.patch
$ ./configure --prefix=/opt/php/5217 --with-config-file-scan-dir=/opt/php/5217/etc/php.d --with-mysql --with-pdo-mysql --with-mysqli --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-ftp --disable-debug --disable-ipv6 --disable-short-tags --enable-calendar --with-mime-magic --with-imap --with-imap-ssl --with-kerberos
$ make
$ sudo make install
$ cp php.ini-recommended /opt/php/5217/lib/php.ini
安装PHP 5.3.28
$ cd /opt/src
$ tar -xvjf php-5.3.28.tar.bz2
$ cd php-5.3.28
$ ./configure --prefix=/opt/php/5328 --with-config-file-scan-dir=/opt/php/5328/etc/php.d --with-mysql --with-pdo-mysql --with-mysqli --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-ftp --disable-debug --disable-ipv6 --disable-short-tags --enable-calendar --with-imap --with-imap-ssl --with-kerberos
$ make
$ sudo make install
$ cp php.ini-development /opt/php/5328/lib/php.ini
安装PHP 5.4.29
$ cd /opt/src
$ tar -xvjf php-5.4.29.tar.bz2
$ cd php-5.4.29
$ ./configure --prefix=/opt/php/5429 --with-config-file-scan-dir=/opt/php/5429/etc/php.d --with-mysql --with-pdo-mysql --with-mysqli --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-ftp --disable-debug --disable-ipv6 --disable-short-tags --enable-calendar --with-imap --with-imap-ssl --with-kerberos
$ make
$ sudo make install
$ cp php.ini-development /opt/php/5429/lib/php.ini
安装PHP 5.5.14
$ cd /opt/src
$ tar -xvjf php-5.5.14.tar.bz2
$ cd php-5.5.14
$ ./configure --prefix=/opt/php/5514 --with-config-file-scan-dir=/opt/php/5514/etc/php.d --with-mysql --with-pdo-mysql --with-mysqli --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-ftp --disable-debug --disable-ipv6 --disable-short-tags --enable-calendar --with-imap --with-imap-ssl --with-kerberos
$ make
$ sudo make install
$ cp php.ini-development /opt/php/5514/lib/php.ini
4. 安装Apache
$ sudo apt-get install apache2
启用相应模块
$ a2enmod headers
$ a2enmod expires
$ a2enmod actions
$ a2enmod rewrite
5. 配置Apache
$ sudo vi /etc/apache2/httpd.conf
追加如下脚本映射和虚拟主机配置,原理同Windows的配置说明。
ServerName localhost
AddType application/x-httpd-php .php
ScriptAlias /php-5217/ "/opt/php/5217/bin/"
ScriptAlias /php-5328/ "/opt/php/5328/bin/"
ScriptAlias /php-5429/ "/opt/php/5429/bin/"
ScriptAlias /php-5514/ "/opt/php/5514/bin/"
<Directory /var/www/sites>
Options Indexes FollowSymLinks Includes ExecCGI
DirectoryIndex index.php index.html
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/sites/5217>
Action application/x-httpd-php "/php-5217/php-cgi"
</Directory>
<Directory /var/www/sites/5328>
Action application/x-httpd-php "/php-5328/php-cgi"
</Directory>
<Directory /var/www/sites/5429>
Action application/x-httpd-php "/php-5429/php-cgi"
</Directory>
<Directory /var/www/sites/5514>
Action application/x-httpd-php "/php-5514/php-cgi"
</Directory>
# Virtualhosts
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/sites/5217/test.local"
ServerName php5217.local
ErrorLog "/var/log/apache2/php5217.local-error.log"
CustomLog "/var/log/apache2/php5217.local-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/sites/5328/test.local"
ServerName php5328.local
ErrorLog "/var/log/apache2/php5328.local-error.log"
CustomLog "/var/log/apache2/php5328.local-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/sites/5429/test.local"
ServerName php5429.local
ErrorLog "/var/log/apache2/php5429.local-error.log"
CustomLog "/var/log/apache2/php5429.local-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/sites/5514/test.local"
ServerName php5514.local
ErrorLog "/var/log/apache2/php5514.local-error.log"
CustomLog "/var/log/apache2/php5514.local-access.log" common
</VirtualHost>
保存配置后,创建各站点的DocumentRoot目录,再往每个目录放置一个phpinfo的测试文件,完成后重启Apache服务器并在本地hosts文件加入域名解析,现在就可以访问各站点来测试多版本PHP共存了。
好了,基本的多版本PHP共存解决方案已经完成,如果还需要添加其他的PHP类库支持,后续自己再调用对应php目录下的pecl, php_config等脚本编译安装就可以了。
9. linux已经安装openssl,如何重新编译php支持openssl模块
下载php的源代码,执行三步安装就行了:
./configure
make && sudo make install
sudo make clean
就可以了,然后编辑php.ini文件加入模块支持:
extensions=openssl.so
好了。大工告成~~~