前面编译安装完成了 Apache 和 MySQL,Apache 的编译安装以及需要的系统之类的见《编译安装LAMP:Apache篇》,MySQL 的编译安装见《编译安装LAMP:MySQL篇》,最后我们要进行 PHP 的编译安装。
已更新 PHP 7.0.X 版本编译选项——20160115
一、用 root 用户连接上主机
二、安装 PHP 需要的组件
安装 PHP 需要的大部分必要组件在安装 Apache 之前已经安装了, 现在安装上剩余的一部分。
1、安装 libiconv(iconv 模块)
libiconv 是由于有些计算机还在使用当地的传统的字符编码方式,为了顺利支持国际化的处理而存在的,所以仍然有在 Unicode 和其他的传统编码之间转换的需求。关于 libiconv,可以访问维基百科或百度百科。
可以在 GNU 的 FTP 下载最新版 libiconv
,文件格式为 libiconv-版本.tar.gz
。libiconv 自 2011 年就没更新了,最新版本为 1.14
。若以后更新了,请使用最新版。
cd /usr/local/src wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz tar -zxf libiconv-1.14.tar.gz cd libiconv-1.14 ./configure --prefix=/usr/local/libiconv make make install
2、安装 libmcrypt、mhash、mcrypt(mcrypt 模块)
mcrypt 模块使 PHP 可以使用除了自带的几种加密函数外功能更全面的 mhash
和 mcrypt
。该模块在默认情况下不开启,所以 Linux 的 PHP 自身也不打包该库,需要自行到官方网站下载代码进行编译安装。关于 mcrypt,可以访问百度百科。
在 libmcrypt 的 sourceforge 下载最新版 libmcrypt
,文件格式为 libmcrypt-版本.tar.gz
。libmcrypt 自 2007 年就没更新了,最新版本为 2.5.8
。若以后更新了,请使用最新版。
cd /usr/local/src wget http://tenet.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz tar -zxf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8 ./configure make make install ldconfig cd libltdl/ ./configure --enable-ltdl-install make make install
使用 ldconfig
命令是因为安装完成后把 libmcrypt 作为一个共享组件了,执行命令后共享对象就可以在 C/C++ 开发中被使用了。
在 mhash 的 sourceforge 下载最新版 mhash
,文件格式为 mhash-版本.tar.gz
。mhash 自 2008 年就没更新了,最新版本为 0.9.9.9
。
在 mcrypt 的 sourceforge 下载最新版 mcrypt
,文件格式为 mcrypt-版本.tar.gz
。mcrypt 自 2008 年就没更新了,最新版本为 2.6.8
。若以后更新了,请使用最新版。
cd /usr/local/src wget http://tcpdiag.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz wget http://softlayer-dal.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz tar -zxf mhash-0.9.9.9.tar.gz tar -zxf mcrypt-2.6.8.tar.gz cd mhash-0.9.9.9 ./configure make make install cat > /etc/ld.so.conf.d/local.conf << EOF /usr/local/lib EOF ldconfig cd ../mcrypt-2.6.8 ./configure make make install
这里博主其实是遇到了问题的,就在 mcrypt 的 ./configure
那步会出现验证 libmcrypt 版本失败的情况,博主查找了很多资料,各有各的解决办法,最后博主还是使用了往共享库添加路径的方法解决的。
三、安装 PHP 5.5/7.0
接下来要进行 PHP 5.5/7.0 的安装。
不使用 PHP 5.6 是因为有些程序对 PHP 5.6 的兼容性不足。不使用 PHP 5.4 及之前版本是因为博主比较能接受 PHP 5.5,而且后面的 Shell 使用了 PHP 5.5 才内置的 opcache
,PHP 5.4 及之前的版本虽然支持,但是要自行下载,当然也可以去除 --enable-opcache
进行配置。
现在 PHP 7 也释出了,PHP 7 的性能相比于 PHP 5 有很大的提升,博主已经迫不及待地用上了 PHP 7。
值得注意的是,从 PHP 7 开始,PHP 官方移除了对 libmysql
的支持,全部替换为 mysqlnd
驱动,所以配置时无需设置 --with-mysql=DIR
,也就是说,从 PHP 7 开始,就无法用 mysql_connect()
进行数据库的连接了。
在 PHP 的官网下载最新版 PHP 5.5/7.0,选择你服务器所在国家的节点下载会比较快,文件格式为 php-5.5.小版本.tar.gz
或 php-7.0.小版本.tar.gz
,下载时请使用最新版 PHP。
PHP 安装在 /usr/local/php
里,若先前安装 Apache 时改变了默认安装路径,需要修改 --with-apxs2
所在路径。
MySQL 我们将使用 PHP 的 mysqlnd
驱动,所以关于 MySQL 的编译选项都设置为 mysqlnd
,这样即使没有安装 MySQL 也能正常编译 PHP。
注:若您的内存低于
1G
,请加上--disable-fileinfo
,不然编译报错,或者增加 Swap 分区,教程见《Linux手动创建Swap交换分区》。
if [ `getconf WORD_BIT` = '32' ] && [ `getconf LONG_BIT` = '64' ] ; then cp -frp /usr/lib64/libldap* /usr/lib fi #这里对64位系统拷贝文件,为了支持ldap ln -s /usr/lib64/libc-client.so /usr/lib/libc-client.so #为了支持imap链接lib64的文件到lib
PHP 5 编译选项,点击展开:
#安装PHP5看这里 cd /usr/local/src wget http://cn2.php.net/distributions/php-5.5.31.tar.gz tar -zxf php-5.5.31.tar.gz cd php-5.5.31 ./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache/bin/apxs \ --with-config-file-path=/usr/local/php/etc \ --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-mysql-sock=/tmp/mysql.sock \ --with-pcre-dir=/usr/local/pcre \ --with-iconv-dir=/usr/local/libiconv \ --with-libxml-dir=/usr \ --with-icu-dir=/usr \ --with-mhash \ --with-bz2 \ --with-curl \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-gd \ --with-gettext \ --with-gmp \ --with-ldap \ --with-ldap-sasl \ --with-mcrypt \ --with-openssl \ --with-xmlrpc \ --with-xsl \ --with-zlib \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --without-pear \ --enable-opcache \ --enable-bcmath \ --enable-calendar \ --enable-sysvsem \ --enable-exif \ --enable-ftp \ --enable-gd-native-ttf \ --enable-intl \ --enable-mbstring \ --enable-pcntl \ --enable-shmop \ --enable-soap \ --enable-sockets \ --enable-wddx \ --enable-zip make make install #若内存低于1G,请把 --enable-zip 改为 --enable-zip --disable-fileinfo ,也就是加上 --disable-fileinfo 这项配置 #make -j 线程数 可以使用多线程编译 #PHP5.5安装完成
PHP 7 编译选项,点击展开:
#安装PHP7看这里 cd /usr/local/src wget http://cn2.php.net/distributions/php-7.0.2.tar.gz tar -zxf php-7.0.2.tar.gz cd php-7.0.2 ./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache/bin/apxs \ --with-config-file-path=/usr/local/php/etc \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-mysql-sock=/tmp/mysql.sock \ --with-pcre-dir=/usr/local/pcre \ --with-iconv-dir=/usr/local/libiconv \ --with-libxml-dir=/usr \ --with-icu-dir=/usr \ --with-mhash \ --with-bz2 \ --with-curl \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-gd \ --with-gettext \ --with-gmp \ --with-ldap \ --with-ldap-sasl \ --with-mcrypt \ --with-openssl \ --with-xmlrpc \ --with-xsl \ --with-zlib \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --without-pear \ --enable-mysqlnd \ --enable-bcmath \ --enable-calendar \ --enable-sysvsem \ --enable-exif \ --enable-ftp \ --enable-gd-native-ttf \ --enable-intl \ --enable-mbstring \ --enable-pcntl \ --enable-shmop \ --enable-soap \ --enable-sockets \ --enable-wddx \ --enable-zip make make install #若内存低于1G,请把 --enable-zip 改为 --enable-zip --disable-fileinfo ,也就是加上 --disable-fileinfo 这项配置 #make -j 线程数 可以使用多线程编译 #PHP7安装完成
mkdir -p /usr/local/php/etc cp php.ini-production /usr/local/php/etc/php.ini #拷贝配置文件到指定位置
更多关于编译参数的内容,请移步《PHP5.5详细编译参数》。
安装完成后,/usr/local/apache/conf/httpd.conf
文件不需要再进行修改,PHP 会自动增加一行 LoadModule。
注意:若不是新安装 PHP,而是从 PHP 5 升级到 PHP 7,则需要注释 Apache 的 httpd.conf 文件中的 php5_module,否则 Apache 找不到 libphp5.so 会无法启动。
四、配置 PHP
安装完 PHP 后,还有需要配置 php.ini
文件,接下来继续配置 PHP。
注:以下 PHP 的配置 shell 本人亲测有效,支持 PHP 5 和 PHP 7,全复制下来黏贴就行。
sed -i 's@^short_open_tag = Off@short_open_tag = On@' /usr/local/php/etc/php.ini sed -i 's@^disable_functions.*@disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,pfsockopen@' /usr/local/php/etc/php.ini sed -i 's@^expose_php = On@expose_php = Off@' /usr/local/php/etc/php.ini sed -i 's@^allow_url_fopen.*@allow_url_fopen = Off@' /usr/local/php/etc/php.ini sed -i 's@^max_execution_time.*@max_execution_time = 300@' /usr/local/php/etc/php.ini sed -i 's@^;upload_tmp_dir.*@upload_tmp_dir = /tmp@' /usr/local/php/etc/php.ini sed -i 's@^post_max_size.*@post_max_size = 50M@' /usr/local/php/etc/php.ini sed -i "s@extension_dir = \"ext\"@extension_dir = \"ext\"\nextension_dir = \"/usr/local/php/lib/php/extensions/`ls /usr/local/php/lib/php/extensions/`\"@" /usr/local/php/etc/php.ini sed -i 's@^upload_max_filesize.*@upload_max_filesize = 100M@' /usr/local/php/etc/php.ini sed -i 's@^;date.timezone.*@date.timezone = Asia/Shanghai@' /usr/local/php/etc/php.ini sed -i 's@^session.cookie_httponly.*@session.cookie_httponly = 1@' /usr/local/php/etc/php.ini sed -i 's@^request_order.*@request_order = "CGP"@' /usr/local/php/etc/php.ini #以上配置了php.ini部分 sed -i 's@^\[opcache\]@[opcache]\nzend_extension=opcache.so@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.enable=.*@opcache.enable=1@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.enable_cli.*@opcache.enable_cli=1@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.memory_consumption.*@opcache.memory_consumption=128@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.interned_strings_buffer.*@opcache.interned_strings_buffer=8@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.max_accelerated_files.*@opcache.max_accelerated_files=4000@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.max_wasted_percentage.*@opcache.max_wasted_percentage=5@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.validate_timestamps.*@opcache.validate_timestamps=1@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.revalidate_freq.*@opcache.revalidate_freq=60@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.fast_shutdown.*@opcache.fast_shutdown=1@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.file_cache=.*@opcache.file_cache=/tmp@' /usr/local/php/etc/php.ini sed -i 's@^;opcache.file_cache_only=.*@opcache.file_cache_only=0@' /usr/local/php/etc/php.ini #以上配置了php.ini的OPCache部分 ln -s /usr/local/php/bin/php /usr/bin/php #任何地方都可以使用php命令
五、启动,测试 PHP
在 /data/www/default/
创建一个 index.php
文件,写上 phpinfo()
,重启 httpd 服务,能看到服务器的各种信息表示 PHP 安装成功。
cat > /data/www/default/index.php << EOF <?php phpinfo(); ?> EOF #创建一个index.php文件,里面是phpinfo()函数。 /etc/init.d/httpd restart #重启Apache服务
访问你的网站的 IP,如果出现下图样式,则表示 LAMP 安装成功。
注意:检查完 PHP 的信息后请立即删除当前 index.php 文件!!
到此为止,整个 LAMP 的搭建就完成了。有疑问请留言= =
相关文章:《编译安装LAMP:Apache篇》、《编译安装LAMP:MySQL篇》
本文的安装方法结合了 http://teddysun.com/lamp 的方法。
原创文章,转载请以链接形式注明出处:https://blog.ttionya.com/article-503.html