編譯安裝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/zh-tw/n/127228.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 雲智直聘 源碼分析

    本文將會對雲智直聘的源碼進行分析,包括前端頁面和後端代碼,幫助讀者了解其架構、技術實現以及對一些常見的問題進行解決。通過本文的閱讀,讀者將會了解到雲智直聘的特點、優勢以及不足之處,…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python網站源碼解析

    本文將從多個方面對Python網站源碼進行詳細解析,包括搭建網站、數據處理、安全性等內容。 一、搭建網站 Python是一種高級編程語言,適用於多種領域。它也可以用於搭建網站。最常…

    編程 2025-04-28
  • 源碼是什麼

    源碼是一段計算機程序的原始代碼,它是程序員所編寫的可讀性高、理解性強的文本。在計算機中,源碼是指編寫的程序代碼,這些代碼按照一定規則排列,被計算機識別並執行。 一、源碼的組成 源碼…

    編程 2025-04-27
  • Think-ORM數據模型及資料庫核心操作

    本文主要介紹Think-ORM數據模型建立和資料庫核心操作。 一、模型定義 Think-ORM是一個開源的ORM框架,用於簡化在PHP應用中(特別是ThinkPHP)與關係資料庫之…

    編程 2025-04-27
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • Go源碼閱讀

    Go語言是Google推出的一門靜態類型、編譯型、並髮型、語法簡單的編程語言。它因具有簡潔高效,內置GC等優秀特性,被越來越多的開發者所鍾愛。在這篇文章中,我們將介紹如何從多個方面…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27

發表回復

登錄後才能評論