Linux环境 php mcrypt扩展完全安装笔记
如果你的php站点 /var/log/httpd/error_log 中报如下错误:
PHP Fatal error: Call to undefined function mcrypt_get_block_size() in /var/www/html/miniblog/system/classes/class_DES.php on line 40
心想必是 mcrypt没有安装
安装步骤如下:
1.查看当前 php 版本 #php -version
2.如果当前linux 中有php的源码包最好,如果没有源码包,需要去下载一个原码包,上传到服务器解压
3.确认是否已安装libmcrypt
ldconfig -p | grep libmcrypt
如果没有安装:
下载地址:http://sourceforge.net/projects/mcrypt
可以同时下载libmcrypt 和 mcrypt
先安装libmcrypt, 默认安装目录为 /usr/local , PHP 手册建议?disable-posix-threads ,不知何故
./configure && make && make install
ldconfig
再安装mcrypt, 默认安装目录为 /usr/local
./configure ?with-libmcrypt-prefix=/usr/local
4. 确认是否已安装mhash
ldconfig -p | grep mhash
如果没有安装:
下载地址:http://mhash.sourceforge.net/
./configure && make && make install
ldconfig
5.进入源码目录,安装mcrypt模块,这一步会生成一个mcrypt.so文件
cd php-x.x.x/ext/mcrypt
./configure ?with-mcrypt=/usr/local/ && make && make install
6.在/etc/php.ini最后面加上一行:extension=/usr/lib/php/modules/mcrypt.so
7.重启php #service httpd restart
在linux下为php安装mcrypt模块
一上班,就收到研发提出网站出现“Call to undefined function mcrypt_create_iv()”
上网查下是没有安装mcrypt模块。
搜索一下,网上大多方法都是安装mcrypt模块要重新编译php,可我的系统在线运行着,不方便编译。
以下是我的处理过程:
环境:rhel 5 +php5.3,已有yum
#yum -y install libmcrypt libmcrypt-devel php-mcrypt php-mbstring
查找相关文件
#updatedb
#locate mcrypt.so
/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so
#locate libmcrypt
/usr/local/bin/libmcrypt-config
/usr/local/lib/libmcrypt
/usr/local/lib/libmcrypt.la
/usr/local/lib/libmcrypt.so
/usr/local/lib/libmcrypt.so.4
/usr/local/lib/libmcrypt.so.4.4.8
有了这两个资料,就可以在php.ini上增加mcrypt模块
#locate php.ini
/usr/local/php5/lib/php.ini
#vi /usr/local/php5/lib/php.ini
增加两行
extension=mcrypt.so
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.modes_dir=
mcrypt.modes_dir=/usr/local/lib/
:wq 保存退出
要重启apache
先安装Homebrew
获取 Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
打开终端窗口, 粘贴以上脚本。
脚本会解释它的作用,然后在您的确认下执行安装。高级安装选项请看 这里(需要10.5)。
What Does Homebrew Do?
又提示缺少套件啦?别担心,Homebrew 随时守候。
$ brew install wget
Homebrew 会将套件安装到独立目录,并将文件软链接至 /usr/local 。
$ cd /usr/local
$ find Cellar
Cellar/wget/1.16.1
Cellar/wget/1.16.1/bin/wget
Cellar/wget/1.16.1/share/man/man1/wget.1
$ ls -l bin
bin/wget -> ../Cellar/wget/1.16.1/bin/wget
Homebrew 的所有文件均会被安装到预定义目录下,所以您无需担心 Homebrew 的安装位置。
轻松创建您的 Homebrew 程式。
$ brew create https://foo.com/bar-1.0.tgz
Created /usr/local/Library/Formula/bar.rb
以 git、 ruby 为其筋骨,所以借助您的相关知识,自由修改,并且可以简单撤回您的调改或者合并上游更新。
$ brew edit wget # 使用 $EDITOR 编辑!
Homebrew 的程式都是简单的 Ruby 脚本:
class Wget < Formula
homepage "https://www.gnu.org/software/wget/"
url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"
sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"
def install
system "./configure", "--prefix=#{prefix}"
system "make", "install"
end
end
Homebrew 使 OS X 更完美。使用 gem 来安装 gems、用 brew 来搞定那些依赖包。
正式安装php
# 添加源
brew tap josegonzalez/homebrew-php
# 一键安装php各个版本
brew install php54 php54-mcrypt
brew install php55 php55-xdebug
brew install php56
一:安装Memcache
1:编译安装libevent
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar -zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure --prefix=/usr/local/libevent
make
make isntall
2:编译安装memcached
wget http://www.memcached.org/files/memcached-1.4.19.tar.gz
tar -zxvf memcached-1.4.19.tar.gz
cd memcached-1.4.19
./configure -with-libevent=/usr/local/libevent/ -prefix=/usr/local/memcached
make
make install
3:启动memcached:
/usr/local/memcached/bin/memcached -d -m 64 -u root -p 11211
下面是memcached命令相关参数详情:
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,这里是10MB,
-u是运行Memcache的用户,这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,这里设置了256,按照服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,也可以启动多个守护进程,不过端口不能重复。
ps aux |grep memcached
clipboard
vim /etc/rc.d/rc.local 加入/usr/local/memcached/bin/memcached -d -m 64 -u root -p 11211 #加入开机启动项
telnet 127.0.0.1 11211 #检测memcache
如果出现-bash: telnet: command not found (说明未安装telnet)
直接yum install telnet
telnet set进行测试
set 对应的参数
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节点
value 存储的值(始终位于第二行)
clipboard1
二: 安装memcache的php扩展
wget http://pecl.php.net/get/memcache-3.0.8.tgz
tar -zxvf memcache-3.0.8.tgz
cd memcache-3.0.8
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so # 查看是否生成扩展so文件
-rwxr-xr-x 1 root root 422219 May 9 10:29 /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so #文件存在
vim /usr/local/php/etc/php.ini #加入扩展
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension = "memcache.so"
重启php:
自己用的是nginx
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` #平滑重启php
/usr/local/php/bin/php -m #查看php是否加入了memcache扩展(或者执行phpinfo函数查看是否存在memcache扩展)
已存在memcach扩展,大功告成!
这几天一直在弄一个商城系统,该系统的源码及数据库都已经上传并创建完毕。但是在安装该系统时,却提示缺少gd库。如下:
使用php探针查看,发现php确实没有安装gd库。如下:
目前服务器的环境是nginx+php-fpm,php使用源码最小化安装,所以就没有安装gd库。尽管没有安装gd库,但是我们还是可以通过单独编译安装gd库。
下面我们就开始来介绍如何给已经编译好的php环境安装gd库。gd库的安装分以下几个步骤:
1、gd库是什么
2、安装libpng
3、安装freetype
4、安装jpegsrc
5、安装gd库
6、检查gd库安装情况
一、gd库是什么
gd库是一个开源的图像处理库,它通过提供一系列用来处理图片的API,使其可以用来创建图表、图形、缩略图以及其他图像的处理操作。
gd库支持JPG、PNG、GIF等常见的图片格式。所以在安装gd库之前,我们需要安装libpng、jpegsrc、freetype这三款软件。
二、安装libpng
libpng软件包包含libpng库,这些库被可以被其它软件用于处理png后缀的图片文件。
下载libpng,如下:
wget http://jaist.dl.sourceforge.net/project/libpng/libpng16/1.6.16/libpng-1.6.16.tar.gz
安装libpng,libpng的安装我们使用默认的选项。如下:
tar -xf libpng-1.6.16.tar.gz
cd libpng-1.6.16
./configure
make
make install
注意:如果系统中已经安装了zlib,要注意zlib和libpng版本之间的兼容性问题,目前已知zlib-1.2.8和libpng-1.5.20可以正常安装,但是与libpng-1.6.16安装时,就会报如下错误:
对此有篇文章对此问题进行了一些描述,如下:
http://stackoverflow.com/questions/19738464/pngfix-c2151-undefined-reference-to-inflateres
三、安装jpegsrc
jpegsrc软件包包含jpeg库,这些库被可以被其它软件用于处理jpg或jpeg后缀的图片文件。
下载jpegsrc,如下:
wget http://www.ijg.org/files/jpegsrc.v9a.tar.gz
安装jpegsrc,jpegsrc的安装我们使用默认的选项。如下:
tar -xf jpegsrc.v9a.tar.gz
cd jpeg-9a/
./configure
make && make install
四、安装freetype
freetype库是一个完全免费开源的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType、OpenType、Type1、CID、CFF、Windows FON/FNT、X11 PCF等。
下载freeType,如下:
wget http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.5.5.tar.gz
安装freetype,freetype的安装我们使用默认的选项。如下:
tar -xf freetype-2.5.5.tar.gz
cd freetype-2.5.5
./configure
make && make install
五、安装gd库
以上三款软件安装完毕后,我们现在来单独编译安装gd库。
单独编译安装gd裤,我们需要切换到php源码包的/ext/gd/目录下,如下:
/root/php-5.6.2/ext/gd
然后在这个目录执行phpize命令。如下:
/usr/local/bin/phpize
为什么要使用phpize命令呢?因为当我们需要再添加一些模块,但是又不想重新编译php时,这时我们就可以使用phpize命令。
注意:phpize命令根据php的安装位置来决定,我这个php安装时使用默认安装位置。
现在可以进行单独编译安装gd库了,如下:
./configure --with-php-config=/usr/local/bin/php-config
make && make install
接着修改php.ini文件,在该文件的Dynamic Extensions模块下添加一行extension=gd.so。如下:
vi /usr/local/lib/php.ini
extension=gd.so
如果不知道php.ini文件的位置,我们可以通过php --ini命令进行查看,如下:
php --ini
六、检查gd库安装情况
gd库安装完毕以及php.ini文件修改完毕后,我们就可以通过php ?m命令查看gd模块是否加载成功。如下:
/usr/local/bin/php -m |grep gd
注意:php ?m是查看php都是安装了哪些模块的命令。
/usr/local/bin/php -m
通过上图,我们可以很明显的看到gd模块已经被正确加载了。
现在我们来重启nginx和php-fpm,然后再看看gd库是否安装成功,如下:
/usr/local/nginx/sbin/nginx -s reload
/etc/init.d/php-fpm restart
通过上图,我们可以看到gd库已经安装成功。
如果是apache的话,我们也是这样进行安装即可。
PHP7算是非常新的版本了我们在windows版本中还没有PHP7了,只有在linux系统中才有关PHP7了,下面我来为各位介绍PHP7安装配置教程,希望对大家有帮助。# 安装mcrypt
yum install -y php-mcrypt libmcrypt libmcrypt-devel
# 升级bison
cd /var/soft/
wget http://ftp.gnu.org/gnu/bison/bison-2.6.4.tar.gz
tar -xvzf bison-2.6.4.tar.gz
cd bison-2.6.4
./configure
make && make install
# 升级re2c,解决You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.错误
cd /var/soft/
wget http://sourceforge.net/projects/re2c/files/re2c/0.13.5/re2c-0.13.5.tar.gz/download
tar zxf re2c-0.13.5.tar.gz && cd re2c-0.13.5
./configure
make && make install
编译PHP7
# 创建目录
mkdir -p /var/soft/php7
cd /var/soft/php7
# 下载源代码
git clone http://git.php.net/repository/php-src.git
cd php-src
./buildconf
# 配置参数
./configure --prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--with-mcrypt=/usr/include \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gd \
--with-iconv \
--with-zlib \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache
#################################################################################
# 编译安装php时出现 /encodings.c:101: undefined reference to `libiconv_close’ 错误的解决方法
# 在装php时出现以下的错误:
# /root/Downloads/php-5.6.5/ext/xmlrpc/libxmlrpc/encodings.c:73: undefined reference to `libiconv_open'
# /root/Downloads/php-5.6.5/ext/xmlrpc/libxmlrpc/encodings.c:81: undefined reference to `libiconv'
# /root/Downloads/php-5.6.5/ext/xmlrpc/libxmlrpc/encodings.c:101: undefined reference to `libiconv_close'
# /root/Downloads/php-5.6.5/ext/xmlrpc/libxmlrpc/encodings.c:101: undefined reference to `libiconv_close'
# collect2: error: ld returned 1 exit status
# make: *** [sapi/cli/php] Error 1
# 根据php官网描述这是一个bug(https://bugs.php.net/bug.php?id=52611)。在configure以后要手动修改下Makefile文件,找到EXTRA_LIBS 在最后添加 -liconv 即可顺利通过
# (大约在Makefile文件的104)
# EXTRA_LIBS = -lcrypt -lz -lresolv -lcrypt -lrt -lmysqlclient -lmcrypt -lltdl -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lxml2 -lz -lm -ldl -lssl -lcrypto -lcurl -lxml2 -lz -lm -ldl -lfreetype -lmysqlclient -lz -lm -lssl -lcrypto -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lssl -lcrypto -lcrypt -liconv
#################################################################################
# 编译安装
make && sudo make install
# 配置
cp php.ini-production /usr/local/php7/etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm
chmod +x /etc/init.d/php7-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
# 配置opcache
vim /usr/local/php7/etc/php.ini
# 加入
zend_extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20141001/opcache.so
# 启动
/etc/init.d/php7-fpm start
# 查看PHP版本
/usr/local/php7/bin/php -v
结果:
PHP 7.0.0-dev (cli) (built:www.111cn.net Mar 3 2015 10:02:26)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies
相关文章
- 由于要使用mikoomi mongodb plugin插件,所以需要php对mongodb的扩展支持,默认通过源安装的php并没有mongodb的扩展支持,具体可以通过php -m|grep mongo 验证 。这里就结...2016-11-25
- 编译安装非常的简单了我们现在的php版本已经到了php7了,下文小编来为各位介绍一篇关于PHP7快速编译安装的步骤,希望文章能够帮助到各位。 一、安装必要一些依赖 yum...2016-11-25
- 这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 安装curl扩展支持https是非常的重要现在许多的网站都使用了https了,下面我们来看一篇关于PHP安装curl扩展支持https例子吧。 问题: 线上运行的lamp服务器,默认yu...2016-11-25
- PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
Linux安装Pytorch1.8GPU(CUDA11.1)的实现
这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25安装和使用percona-toolkit来辅助操作MySQL的基本教程
一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24- 这篇文章主要介绍了vscode安装git及项目开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-19
- 这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
- 现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。 JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
Centos中彻底删除Mysql(rpm、yum安装的情况)
我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15- PHP是一种解释型的语言,对于用户而言,我们精心的控制内存意味着easier prototyping和更少的崩溃!当我们深入到内核之后,所有的安全防线都已经被越过,最终还是要依赖于真正有责任心的软件工程师来保证系统的稳定运行。1、线...2015-11-08
- 这篇文章主要介绍了在PyCharm中安装PaddlePaddle的方法,本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-05
- 这篇文章主要介绍了linux服务器快速卸载安装node环境(简单上手),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
Ubuntu20.04安装cuda10.1的步骤(图文教程)
这篇文章主要介绍了Ubuntu20.04安装cuda10.1的步骤(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-30- 这篇文章主要介绍了uni-app从安装到卸载的入门教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-15
- 这篇文章主要介绍了浅谈Vue开发人员的7个最好的VSCode扩展,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
Postman安装与使用详细教程 附postman离线安装包
这篇文章主要介绍了Postman安装与使用详细教程 附postman离线安装包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-05- 我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
- 1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31