A. centos下编译安装php,参数里面含有--enable-fastcgi --enable-force-cgi-redirect,但是bin里没有php-cgi
--enable-cgi即可
B. 如何在openSUSE42.1下编译安装PHP7
首先推荐一篇文章
PHP
7
Release
Date
Arrived:
Will
Developers
Adopt
PHP
7?
-
PHP
Classes
blog
。
里面说到是否会去使用PHP7,就个人而言,我是毫不犹豫地使用的,但是生产环境就不是我说了算,所以只能自己在自己的开发环境里更新PHP的版本。那么,你呢?
笔者使用的是linux的openSUSE42.1发行版,Yast里面还没有PHP7的安装包,于是乎只能自己手动编译安装了。作为一个PHP开发者,我是非常希望能够学会编译安装PHP7的,之前试过几次,但是每次安装都要上网找各种资料,于是乎,这次安装成功后就想把自己的安装过程以及遇到的问题记录下来,方便以后查阅和分享给需要的人。
下载源码并解压
进入正题,要编译安装PHP7,首先当然要下载PHP7的源码。你可以到
github
上clone,也可以到
PHP官网
下载。下载后解压到
/usr/local/src
目录,并将目录重命名为php7。进入目录。
配置编译参数
生成配置文件
./buildconf
配置
./configure
\
--prefix=/usr/local/php7
\
--exec-prefix=/usr/local/php7
\
--bindir=/usr/local/php7/bin
\
--sbindir=/usr/local/php7/sbin
\
--includedir=/usr/local/php7/include
\
--libdir=/usr/local/php7/lib/php
\
--mandir=/usr/local/php7/php/man
\
--with-config-file-path=/usr/local/php7/etc
\
--with-mysql-sock=/var/run/mysql/mysql.sock
\
--with-mcrypt=/usr/include
\
--with-mhash
\
--with-openssl
\
--with-mysqli=shared,mysqlnd
\
--with-pdo-mysql=shared,mysqlnd
\
--with-gd
\
--with-iconv
\
--with-zlib
\
--enable-zip
\
--enable-inline-optimization
\
--disable-debug
\
--disable-rpath
\
--enable-shared
\
--enable-xml
\
--enable-bcmath
\
--enable-shmop
\
--enable-sysvsem
\
--enable-mbregex
\
--enable-mbstring
\
--enable-ftp
\
--enable-gd-native-ttf
\
--enable-pcntl
\
--enable-sockets
\
--with-xmlrpc
\
--enable-soap
\
--without-pear
\
--with-gettext
\
--enable-session
\
--with-curl
\
--with-jpeg-dir
\
--with-freetype-dir
\
--enable-opcache
\
--enable-fpm
\
--disable-cgi
\
--with-fpm-user=nginx
\
--with-fpm-group=nginx
\
--without-gdbm
\
--disable-fileinfo
参数说明
prefix
PHP7安装的根目录
with-config-file-path
PHP7的配置文件目录
执行完上面的配置命令后的结果如下图所示:
执行上面命令的过程中会遇到一些依赖缺少的提示,下面列出我遇到的依赖问题:
错误:
configure:
error:
xml2-config
not
found.
Please
check
your
libxml2
installation.
解决:
zypper
install
libxml2-devel
错误:
configure:
WARNING:
unrecognized
options:
--with-mysql
解决:
取消这个选项,这个选项是不存在的
错误:
configure:
error:
jpeglib.h
not
found.
解决:
zypper
install
libjpeg-devel
错误:
configure:
error:
mcrypt.h
not
found.
Please
reinstall
libmcrypt.
解决:
zypper
install
libmcrypt-devel
错误:
checking
for
recode
support...
yes
configure:
error:
Can
not
find
recode.h
anywhere
under
/usr
/usr/local
/usr
/opt.
解决:
zypper
install
librecode-devel
总的来说,在配置的时候遇到没有的就打开Yast搜一下,如果有的话就安装,然后重新编译看还需要那些,如果在Yast找不到,那就上网找一下Google。
编译和安装PHP7
make
&&
make
install
其中,make之后可以选择make
test。只是一个可选步骤,不执行不知道有什么问题,不过笔者暂时还没遇到。
查看安装成功后的PHP7目录
编译安装成功后,查看PHP7的安装目录`ls
/usr/local/php7`:
设置PHP7的配置文件
cp
/usr/local/src/php7/php.ini-proction
/usr/local/php7/etc/php.ini
cp
/usr/local/src/sapi/fpm/init.d.php-fpm
/etc/init.d/php-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
设置环境变量
在/etc/profile
文件的最后一行加上
export
PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH
然后执行
source
/etc/profile
设置PHP日志目录和php-fpm进程文件(php-fpm.sock)目录
mkdir
-p
/var/log/php-fpm/
&&
mkdir
-p
/var/run/php-fpm
&&
cd
/var/run/
&&
chown
-R
nginx:nginx
php-fpm
将PHP设置为开机启动
chmod
+x
/etc/init.d/php-fpm
chkconfig
php-fpm
on
可以用chkconfig命令查看开机启动服务列表。
启动PHP服务
service
php-fpm
start
通过ps
aux
|
grep
'php'查看PHP是否启动成功
至此,PHP7就安装成功了,你也开始使用PHP7吧!
C. 编译PHP要用什么样的参数,才能支持远程连接Mysql服务器
和PHP没关系,要设置MYSQL
用root用户进数据库,选择mysql库,user表里,把对应用户(比如root)的Host改为%号(任意IP,不分本地远程),或者改为某一IP(指定IP登录),再重启下MYSQL,就可以远程访问MYSQL了。
D. linux怎么查看php安装编译参数
1、Linux下,默认是在/usr/local/bin/,假如你设置--prefix=/usr/local/php那么就在/usr/local/php/bin/
2、sbin道理相同。sbin的意思就是server
bin
3、EPREFIX没用过
4、如果要用2套版本,用prefix区分开不同的安装目录。
E. 如何编译安装PHP扩展
一开始安装PHP的时候,我们并不知道需要哪些扩展,所以只有等到我们真正用到的时候才想办法去安装。
安装PHP扩展最简单的办法就是
sudo apt-get install php5-xxx
但有的时候并非我们所愿,源里面并没有我们需要的扩展,这时候就需要我们下载源码自己编译安装了。
这篇文章中我将介绍在本地Linux平台下编译安装PHP扩展的方法。
现在网站根目录下创建 index.php 打印基本的配置信息,以验证我们是否安装成功。
配置编译环境
我们需要安装一些编译必须的库,还有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev
Fedora
sudo yum install php-devel php-mysqlnd gcc libtool
RHEL
sudo yum install php-devel php-mysql gcc libtool
Suse
yast2 -i php5-pear php5-devel php5-mysql gcc
安装扩展
PHP有两种可供安装的扩展:一种是PHP原生的但是默认没有安装的,另一种的第三方开发的扩展。
下面依次介绍两种扩展的安装方法:
安装之前我们需要一份和当前机器上相同版本的PHP源码
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9
前往此处 下载相应的源码包。
在 /ext 目录下面可以看到所有PHP原生的扩展。
安装原生扩展
以 PHP-intl 为例,这是PHP国际化的扩展。
为了安装这个扩展我们需要先安装ICU 库
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg
ICU 安装成功之后进入/ext/intl 目录:
cd intl
phpize
./configure --enable-intl
make
sudo make install
下面解释一下上面的每个命令:
phpize : 是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
./configure --enable-intl: 配置编译环境,相当于告诉编译器编译PHP源码的时候加上intl这个扩展。
make: 将会把源码编译成 intl.so
make install : 将会把 intl.so 移动到当前安装的 PHP 的扩展目录。
接下来我们要做的就是在php.ini中启用这个扩展,这一步将会在最后给出示例。
安装第三方扩展
将以这个 扩展为例,这个扩展主要实现了PHP识别条形码的功能。
先安装必要的依赖
sudo apt-get install pkg-config
git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install
将会生成一个文件,将其拷贝到PHP的扩展目录下面。
启用扩展
在php.ini中启用扩展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,这是最简单直接的方法。
也可以单独建一个ini文件,然后在php.ini中包含这些文件就可以了。
下面介绍一下第二种方法:
cd `/etc/php5/mods-available`
这个目录里可以放新建的ini文件,然后执行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini
上面的命令将会创建ini文件,并且写如相应的配置信息。
然后执行下面的命令启用扩展即可(需要安装 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl
如果未安装 php5enmod 工具,则需要手动配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini
最后在执行一下重启操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart
F. PHP8、FPM及部分扩展编译安装
本着能懒则懒的原则,之前我都是宝塔、lnmp脚本等“一键”
再不济也得来个 apt/yum install php
什么?源码 make install ? 编译参数一言难尽,劝退劝退...我只是想要个开发环境而已
没关系!我来整理一下常用模块以及参数!环境为 ubuntu/debian
检查压缩包的完整性,与官网 sha256比较
安装以下包
官方的拓展分类
根据需要的模块添加其后对应的参数
包含常用模块,可以直接使用
编译并安装后
复制 php.ini 到默认目录 /usr/local/lib/
检查 php安装是否正确
复制 fpm 配置文件、运行服务文件
www.conf php-fpm.conf php-fpm.service
修改 fpm 用户和组,默认为nobody
修改服务文件,取消只读 不然日志不能读写无法启动
设置自启动并运行
本地起服务测试
No package 'libxml-2.0' found
No package ‘sqlite3‘ found
configure: WARNING: unrecognized options: –with-gd
No package 'zlib' found
No package 'libpng' found
No package 'oniguruma' found
No package 'libcurl' found
No package 'libsystemd' found
No package 'openssl' found
No package 'libzip' found
G. 在编译 php 时,为了使用 php 内置的 fpm 功能,应该使用什么参数
php5.3.3以后源码中已经内嵌了php-fpm,不用象以前的php版本一样专门打补丁了,只需要在configure的时候添加编译参数即可。关于php-fpm的编译参数有–enable-fpm–with-fpm-user=www–with-fpm-group=www–with-libevent-dir=libevent位置。但是,php5.3.3以后的php-fpm不再支持php-fpm以前具有的/usr/local/php/sbin/php-fpm(start|stop|reload)等命令,需要使用信号控制:master进程可以理解以下信号:INT,TERM立刻终止QUIT平滑终止USR1重新打开日志文件USR2平滑重载所有worker进程并重新载入配置和二进制模块有了以上信号,php-fpm进程重启就方便多了。例子:php-fpm关闭:代码示例:kill-INT`cat/usr/local/php/var/run/php-fpm.pid`php-fpm重启:代码示例:kill-USR2`cat/usr/local/php/var/run/php-fpm.pid`说明:cat部分是php-fpm的进程号,可能是我用的5.4的问题。没有用php-fpm.pid,就没有这个文件。可以用psaux|grepphp-fpm,使用第一个进程的进程号,测试可行。
H. 指定目录编译安装 php-5.6.10,make install运行无错,但是在该目录下没有找到/sbin目录和php-fpm,求助!
感谢提供,其实我感觉用AMH和VPSMate一键安装更方便哟。
I. PHP编译安装后,通过那个命令查看交装结果
1、在终端通过phpv命令来查看一下当前php的版本。如果没有安装php,一般会提示没有php这个命令的。
2、在终端查询安装的包中是否有php,以redhat为例,则可以执行如下命令,rpmqa|grepphp。
3、可以使用pear命令的list参数查看安装的php支持,pear是PHP扩展和应用库的缩写,注意它不是鸭梨,尽管和该水果的发音相同。在安装好php之后,缺省情况下会自动安装pear的部分程序库,所以是否安装php可以用pear命令来确定,执行如下命令,pearlist。
J. 如何安装PHP
得看是什么程序以及程序写的怎么样了。
如果是文本数据库的 并且程序写的不错的话
直接上传上去 不用设置什么 就可以使用了。
如果写的一般的话 需要设置一下 文本数据库的路径。
如果是Mysql数据做支持的话,
首先得程序自带的安装程序 创建数据库
如果程序没有自带安装程序,那么你就得自己手动的创建数据库了。
然后设置好mysql的相关链接参数后,一般就可以用了。
希望我的回答对你有所帮助。