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

  • 1、centos6.5怎么安装php5.5
  • 2、如何安装php的扩展bcmath
  • 3、如何安装新的PHP扩展模块

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具体步骤如下(以下操作均在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单独添加某一个模块呢?查找资料,发现还是有方法的,重点就是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的动态模块加载就完成了。

原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/127228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
简单一点的头像简单一点
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相关推荐

  • php读取文件后替换,php替换文本指定内容

    本文目录一览: 1、php实现将一个文件中的内容替换 2、PHP如何写入,读取与替换文件内容 3、php读取目录及子目录下所有txt文件,再替换每个txt文件里system字符 4…

    编程 2024-11-28
  • 抽象类实例化

    一、抽象类的定义 抽象类是一种特殊的类,它不能被实例化,只能被继承,用来定义一些方法和属性,这些方法和属性可以有具体的实现,也可以没有具体的实现。抽象类的作用是为了让子类来实现它的…

    编程 2024-12-09
  • 深入理解Android ClassLoader机制的实现原理

    一、ClassLoader概述 ClassLoader(类加载器)是Java虚拟机的一项核心技术,实现了虚拟机动态加载类及其依赖的特性。ClassLoader主要负责查找并加载类文…

    编程 2024-10-29
  • java类库,java类库帮助文档

    本文目录一览: 1、java常用类库有哪些 2、什么是java jdk? 3、什么是Java类库? java常用类库有哪些 java.lang.* Java编程语言的基本类库 ja…

    编程 2024-12-09
  • JSwhile循环的探究与应用

    JS中的while循环是一种基于条件执行的循环语句,只要循环条件满足,就会一直执行下去。本文将从多个方面探究JSwhile循环的语法和应用。 一、JSwhile循环求5的阶乘 阶乘…

    编程 2024-12-11
  • EasyPOIReplace:一个方便的POI替换库

    一、基于POI接口的简单易用性 EasyPOIReplace是一个基于Apache POI接口开发的Java库,主要提供了对POI模板进行替换的功能,方便的进行Excel、Word…

    编程 2024-11-30
  • Helm命令详解

    一、Helm 简介 Helm 是一个 Kubernetes 的包管理工具,它允许你定义,安装和管理 Kubernetes 应用程序。Helm 通过将应用程序的定义打包为 chart…

    编程 2024-10-04
  • Python中数字转换为字符串的几种方法

    Python 是一种强大而又易学的编程语言,其内置了许多现成的函数,使我们的编程工作变得更加方便。在本文中,我们将介绍 Python 如何将数字转换为字符串,并提供一些常用的方法和…

    编程 2024-11-14
  • Python无法找到指定模块

    一、背景介绍 Python是一种广泛使用的高级编程语言,其开源的特性让它得到了广泛的应用和拥趸。在使用Python编写程序的时候,我们可能会遇到这样的问题:在使用import导入模…

    编程 2024-11-19
  • Restclient使用教程

    一、什么是Restclient Restclient是一款用来测试Restful API的强大工具,可以帮助开发人员快速调试和验证API的可用性。它支持GET、POST、PUT、D…

    编程 2024-12-09

发表回复

登录后才能评论