您的位置:

编译安装php核心类库(php源码编译安装)

本文目录一览:

centos6.5怎么安装php5.5

1.******已安装Nginx******

ps -aux | grep nginx

netstat -anptu | grep 80

2.清除系统中php痕迹:

yum remove php

rm -rvf /etc/php

rm -rvf /etc/php.ini

rm -f /usr/bin/php

3.安装php所需软件包:

tar zxvf autoconf-2.68.tar.gz -C /usr/src

cd /usr/src/autoconf-2.68/

./configure make make install

tar zxvf libiconv-1.14.tar.gz -C /usr/src

cd /usr/src/libiconv-1.14/

./configure make make install

tar zxvf libmcrypt-2.5.8.tar.gz -C /usr/src

cd /usr/src/libmcrypt-2.5.8/

./configure make make install

ldconfig

cd libltdl/

./configure --enable-ltdl-install

make make install

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

tar zxvf mhash-0.9.9.9.tar.gz -C /usr/src

cd /usr/src/mhash-0.9.9.9/

./configure make make install

tar zxvf mcrypt-2.6.8.tar.gz -C /usr/src

cd /usr/src/mcrypt-2.6.8/

./configure make make install

4.加载php动态模块:

ln -s /usr/local/lib/libmcrypt.la /usr/lib64/libmcrypt.la

ln -s /usr/local/lib/libmcrypt.so /usr/lib64/libmcrypt.so

ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib64/libmcrypt.so.4

ln -s /usr/local/lib/libmcrypt.so.4.4.8

/usr/lib64/libmcrypt.so.4.4.8

ln -s /usr/local/lib/libmhash.a /usr/lib64/libmhash.a

ln -s /usr/local/lib/libmhash.la /usr/lib64/libmhash.la

ln -s /usr/local/lib/libmhash.so /usr/lib64/libmhash.so

ln -s /usr/local/lib/libmhash.so.2 /usr/lib64/libmhash.so.2

ln -s /usr/local/lib/libmhash.so.2.0.1

/usr/lib64/libmhash.so.2.0.1

cp -R /usr/lib64/libpng.* /usr/lib/

cp -R /usr/lib64/libjpeg.* /usr/lib/

echo "/lib" /etc/ld.so.conf

echo "/usr/lib" /etc/ld.so.conf

echo "/usr/lib64" /etc/ld.so.conf

echo "/usr/local/lib" /etc/ld.so.conf

echo "* soft nproc 65535" /etc/security/limits.conf

echo "* hard nproc 65535" /etc/security/limits.conf

echo "* soft nofile 65535" /etc/security/limits.conf

echo "* hard nofile 65535" /etc/security/limits.conf

echo "fs.file-max=65535" /etc/sysctl.conf

ldconfig

5.解压、配置、编译、安装php:

tar zxvf php-5.5.25.tar.gz -C /usr/src

cd /usr/src/php-5.5.25/

./configure --prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \

--enable-fpm \

--with-fpm-user=www \

--with-fpm-group=www \

--with-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-iconv-dir \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir \

--with-zlib \

--with-libxml-dir=/usr \

--enable-xml \

--enable-opcache \

--disable-rpath \

--enable-bcmath \

--enable-shmop \

--enable-sysvsem \

--enable-inline-optimization \

--with-curl \

--enable-mbregex \

--enable-mbstring \

--with-mcrypt \

--enable-ftp \

--with-gd \

--enable-gd-native-ttf \

--with-openssl \

--with-mhash \

--enable-pcntl \

--enable-sockets \

--with-xmlrpc \

--enable-zip \

--enable-soap \

--without-pear \

--with-gettext \

--disable-fileinfo

make ZEND_EXTRA_LIBS='-liconv'

make install

6.链接php可执行文件:

ln -s /usr/local/php/bin/php /usr/bin/php

ln -s /usr/local/php/bin/phpize /usr/bin/phpize

ln -s /usr/local/php/sbin/php-fpm /usr/bin/php-fpm

7.编辑php.ini配置文件:

cp /usr/src/php-5.5.25/php.ini-production

/usr/local/php/etc/php.ini

ln -s /usr/local/php/etc/php.ini /etc/php.ini

vim /etc/php.ini

[PHP]

engine = On

zend.ze1_compatibility_mode = Off

short_open_tag = On

asp_tags = Off

precision

= 12

y2k_compliance = On

output_buffering = On

zlib.output_compression = Off

implicit_flush = Off

unserialize_callback_func=

serialize_precision = 100

safe_mode = Off

safe_mode_gid = Off

safe_mode_include_dir =

safe_mode_exec_dir =

safe_mode_allowed_env_vars = PHP_

safe_mode_protected_env_vars = LD_LIBRARY_PATH

disable_functions =

passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket

disable_classes =

expose_php = On

error_reporting = E_ALL ~E_NOTICE

display_errors = On

display_startup_errors = Off

log_errors = Off

log_errors_max_len = 1024

ignore_repeated_errors = Off

ignore_repeated_source = Off

report_memleaks = On

track_errors = Off

variables_order = "EGPCS"

register_globals = Off

register_long_arrays = Off

register_argc_argv = On

auto_globals_jit = On

post_max_size = 50M

magic_quotes_gpc = Off

magic_quotes_runtime = Off

magic_quotes_sybase = Off

auto_prepend_file =

auto_append_file =

default_mimetype = "text/html"

doc_root =

user_dir =

extension_dir =

"/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/"

enable_dl = On

cgi.fix_pathinfo=0

file_uploads = On

upload_max_filesize = 50M

max_file_uploads = 20

allow_url_fopen = On

allow_url_include = Off

default_socket_timeout = 60

[Date]

date.timezone = PRC

[filter]

[iconv]

[sqlite]

[Pcre]

[Syslog]

define_syslog_variables = Off

[mail function]

SMTP = localhost

smtp_port = 25

[SQL]

sql.safe_mode = Off

[ODBC]

odbc.allow_persistent = On

odbc.check_persistent = On

odbc.max_persistent = -1

odbc.max_links = -1

odbc.defaultlrl = 4096

odbc.defaultbinmode = 1

[MySQL]

mysql.allow_persistent = On

mysql.max_persistent = -1

mysql.max_links = -1

mysql.default_port =

mysql.default_socket =

mysql.default_host =

mysql.default_user =

mysql.default_password =

mysql.connect_timeout = 60

mysql.trace_mode = Off

[MySQLi]

mysqli.max_links = -1

mysqli.default_port = 3306

mysqli.default_socket =

mysqli.default_host =

mysqli.default_user =

mysqli.default_pw =

mysqli.reconnect = Off

[mSQL]

msql.allow_persistent = On

msql.max_persistent = -1

msql.max_links = -1

[OCI8]

[PostgresSQL]

pgsql.allow_persistent = On

pgsql.auto_reset_persistent = Off

pgsql.max_persistent = -1

pgsql.max_links = -1

pgsql.ignore_notice = 0

pgsql.log_notice = 0

[Sybase]

sybase.allow_persistent = On

sybase.max_persistent = -1

sybase.max_links = -1

sybase.min_error_severity = 10

sybase.min_message_severity = 10

sybase.compatability_mode = Off

[Sybase-CT]

sybct.allow_persistent = On

sybct.max_persistent = -1

sybct.max_links = -1

sybct.min_server_severity = 10

sybct.min_client_severity = 10

[bcmath]

bcmath.scale = 0

[browscap]

[Informix]

ifx.default_host =

ifx.default_user =

ifx.default_password =

ifx.allow_persistent = On

ifx.max_persistent = -1

ifx.max_links = -1

ifx.textasvarchar = 0

ifx.byteasvarchar = 0

ifx.charasvarchar = 0

ifx.blobinfile = 0

ifx.nullformat = 0

[Session]

session.save_handler = files

session.use_cookies = 1

session.name = PHPSESSID

session.auto_start = 0

session.cookie_lifetime = 0

session.cookie_path = /

session.cookie_domain =

session.cookie_httponly =

session.serialize_handler = php

session.gc_probability = 1

session.gc_divisor

= 100

session.gc_maxlifetime = 1440

session.bug_compat_42 = 1

session.bug_compat_warn = 1

session.referer_check =

session.entropy_length = 0

session.entropy_file =

session.cache_limiter = nocache

session.cache_expire = 180

session.use_trans_sid = 0

session.hash_function = 0

session.hash_bits_per_character = 4

url_rewriter.tags =

"a=href,area=href,frame=src,input=src,form=,fieldset="

[MSSQL]

mssql.allow_persistent = On

mssql.max_persistent = -1

mssql.max_links = -1

mssql.min_error_severity = 10

mssql.min_message_severity = 10

mssql.compatability_mode = Off

mssql.secure_connection = Off

[Assertion]

[COM]

[mbstring]

[FrontBase]

[gd]

[exif]

[Tidy]

tidy.clean_output = Off

[soap]

soap.wsdl_cache_enabled=1

soap.wsdl_cache_dir="/tmp"

soap.wsdl_cache_ttl=86400

[Zend Optimizer]

zend_extension =

/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/opcache.so

zend_loader.enable = 1

zend_loader.disable_licensing = 0

zend_loader.obfuscation_level_support = 3

8.编辑php-fpm.conf配置文件:

cp /usr/local/php/etc/php-fpm.conf.default

/usr/local/php/etc/php-fpm.conf

vim /usr/local/php/etc/php-fpm.conf

[global]

pid = /home/php/pid/php-fpm.pid

error_log = /home/php/log/php-fpm_error.log

log_level = notice

[www]

listen = 127.0.0.1:9000

listen.backlog = -1

listen.allowed_clients = 127.0.0.1

listen.owner = www

listen.group = www

listen.mode = 0666

user = www

group = www

pm = dynamic

pm.max_children = 10

pm.start_servers = 2

pm.min_spare_servers = 1

pm.max_spare_servers = 6

request_terminate_timeout = 100

request_slowlog_timeout = 0

slowlog = /home/php/log/slow.log

9.编写php-fpm启动脚本

vim /etc/init.d/php-fpm

#!/bin/sh

# chkconfig:

2345 90

10

#

Description:

Start and

Stop php-fpm

# Provides:

php-fpm

#

Default-Start:

2 3 4 5

#

Default-Stop:

0 1 6

prefix=/usr/local/php

exec_prefix=${prefix}

php_fpm_BIN=${prefix}/sbin/php-fpm

php_fpm_CONF=${prefix}/etc/php-fpm.conf

php_fpm_PID=/home/php/pid/php-fpm.pid

php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"

wait_for_pid () {

try=0

while test $try -lt 35 ; do

case "$1" in

'created')

if [ -f "$2" ] ; then

try=''

break

fi

;;

'removed')

if [ ! -f "$2" ] ; then

try=''

break

fi

;;

esac

echo -n .

try=`expr $try + 1`

sleep 1

done

}

case "$1" in

start)

echo -n "Starting php-fpm..."

$php_fpm_BIN --daemonize $php_opts

if [ "$?" != 0 ] ; then

echo " failed"

exit 1

fi

wait_for_pid created $php_fpm_PID

if [ -n "$try" ] ; then

echo " failed"

exit 1

else

echo " done"

fi

;;

stop)

echo -n "Stoping php-fpm..."

if [ ! -r $php_fpm_PID ] ; then

echo "warning, no pid file found - php-fpm is not running ?"

exit 1

fi

kill -QUIT `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n "$try" ] ; then

echo " failed. Use force-quit"

exit 1

else

echo " done"

fi

;;

force-quit)

echo -n "Terminating php-fpm "

if [ ! -r $php_fpm_PID ] ; then

echo "warning, no pid file found - php-fpm is not running ?"

exit 1

fi

kill -TERM `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n "$try" ] ; then

echo " failed"

exit 1

else

echo " done"

fi

;;

restart)

$0 stop

$0 start

;;

reload)

echo -n "Reload service php-fpm "

if [ ! -r $php_fpm_PID ] ; then

echo "warning, no pid file found - php-fpm is not running ?"

exit 1

fi

kill -USR2 `cat $php_fpm_PID`

echo " done"

;;

*)

echo "Usage: $0 {start|stop|force-quit|restart|reload}"

exit 1

;;

esac

10.创建目录并修改权限,重启nginx服务:

mkdir -p /home/php/log

mkdir -p /home/php/pid

chown -R www:www /home/php/log

chown -R www:www /home/php/pid

service nginx restart

11.添加php-fpm系统服务:

chmod +x /etc/init.d/php-fpm

chkconfig --add php-fpm

chkconfig --level 2345 php-fpm on

chkconfig --list | grep php-fpm

12.启动php-fpm服务:

service php-fpm start

ps -aux | grep php-fpm

netstat -anptu | grep 9000

13.配置php测试页:

vim /home/www/html/phpinfo.php

如何安装php的扩展bcmath

为了让网站成功运行,就需要在php中增加bcmath这个扩展(其实默认的php中已经存在bcmath扩展,但是没有安装编译)

安装php的扩展bcmath具体步骤如下(以下操作均在wdcp 2.4的环境中):

1、ssh登陆vps控制台后,进入要安装的扩展的源码目录:cd /root/lanmp/php-5.2.17/ext/bcmath

2、运行phpize,这是wdcp中的路径: /www/wdlinux/php/bin/phpize

出现如下提示:

configuring for:

php api version:

20041225

zend module api no: 20060613

zend extension api no: 220060519

3、编译安装:

./configure --with-php-config=/www/wdlinux/php/bin/php-config

make

make install

4、增加到配置文件php.ini里

vi /www/wdlinux/etc/php.ini

在最后增加:extension=bcmath.so

5、重启服务

service httpd restart

service nginxd restart

然后就大功告成

如何安装新的PHP扩展模块

php安装好后,可能在初次安装时,会有些模块会有遗漏,但是我们又不想重新编译php,因为耗时是比较长的。我们可不可以在不重新编译安装php的情况下,来为php单独添加某一个模块呢?查找资料,发现还是有方法的,重点就是phpize了,于是写了这篇文章.

下面我们就以单独为php加载mysqli模块为例,演示如何动态为php添加模块。

1、找到php原码安装文件

2、cd /home/php/ext/myslqi

3、运行 /usr/local/php/bin/phpize

4、/configure –with-php-config=/usr/local/php/bin/php-config

5、make make install

6、安装完成之后会在系统/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/这个目录下面生成mysqli.so的库文件

7、编辑php.ini文件,指定php到哪人目录读取模块

vi /usr/local/php/etc/php.ini

extension_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613″

extension=mysqli.so

8、重启php服务 /usr/local/php/sbin/php-fpm restart

7、/usr/local/php/bin/php -m|grep mysqli 查看mysqli.so是否存在

如果步骤正确,你的人口也不差的情况下,应该这样php的动态模块加载就完成了。