最近一段時(shí)間學(xué)習(xí)了一下PHP,用CI做了一個(gè)小項(xiàng)目,為了開發(fā)方便,本地windows下使用了集成環(huán)境 XAMPP ,不過(guò)當(dāng)把項(xiàng)目部署到linux上時(shí),確實(shí)遇到了很多問(wèn)題,下面把我在linux上安裝php的過(guò)程記錄一下。
?
項(xiàng)目說(shuō)明:
1.項(xiàng)目基于CI(
codeigniter2.1.4
)框架;
2.多數(shù)據(jù)源支持(mysql,oracle),mysql與oracle部署在其它服務(wù)器上;
3.支持PDO。
?
環(huán)境說(shuō)明:
1.linux是linux centos6.4?x86_64;
2.本地已經(jīng)安裝好Apache( httpd-2.2.26 ),并開啟80端口;
3.其它服務(wù)器已經(jīng)安裝好MySQL5.6.14和Oracle11.2。
?
工具下載:
1. PHP :php-5.5.6.tar.gz
?
將所有包下載到/usr/local/src下
?
開始安裝:
注意:按如下順序安裝
1.安裝libxml2
cd /usr/local/src/
tar zxvf libxml2-2.6.30.tar.gz
cd libxml2-2.6.30
./configure --prefix=/usr/local/libxml2
make &&?make install
?
2.安裝libmcrypt、zlib、libpng、freetype
安裝方法同libxml2,分別安裝到如下路徑
/usr/local/libmcrypt
/usr/local/zlib
/usr/local/libpng
/usr/local/freetype
?
注意,安裝freetype時(shí)有可能提示如下錯(cuò)誤:
?either set the LIBPNG_CFLAGS and LIBPNG_LDFLAGS environment variables
?
這是提示找不到libpng的安裝位置,所以需要將libpng的bin目錄配置到環(huán)境變量中:
解決方法:
編輯:vi /etc/profile
LIB_PNG=/usr/local/libpng/bin
PATH=$LIB_PNG:$PATH ?
export PATH?
生效:. ?/etc/profile
?
重新安裝freetype即可。
?
3.安裝jpeg9
mkdir /usr/local/jpeg9
mkdir /usr/local/jpeg9/bin
mkdir /usr/local/jpeg9/lib
mkdir /usr/local/jpeg9/include
mkdir -p /usr/local/jpeg9/man/man1
cd /usr/local/src/
tar zxvf jpegsrc.v9.tar.gz
cd?jpeg-9
./configure \
> --prefix=/usr/local/jpeg9/ \?
> --enable-shared \ //建立共享庫(kù)使用的GNU 的libtool
> --enable-static //建立靜態(tài)庫(kù)使用的GNU 的libtool
make &&?make install
?
4.安裝 autoconf
cd /usr/local/src/
tar zxvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure
make &&?make install
?
5.安裝GD
cd /usr/local/src/
tar zxvf?libgd-2.1.0.tar.gz
cd?libgd-2.1.0
./configure \ //配置命令
> --prefix=/usr/local/gd2/ \ //指定軟件安裝的位置
> --with-zlib=/usr/local/zlib/ \ //指定到哪去找zlib 庫(kù)文件的位置
> --with-jpeg=/usr/local/jpeg9/ \ //指定到哪去找jpeg 庫(kù)文件的位置
> --with-png=/usr/local/libpng/ \ //指定到哪去找png 庫(kù)文件的位置
> --with-freetype=/usr/local/freetype/ //指定到哪去找freetype 2.x 字體庫(kù)的位置
make &&?make install
?
ok,以上過(guò)程應(yīng)該不會(huì)遇到問(wèn)題, 接下來(lái)安裝PHP 。
問(wèn)題從這里開始,我們一步一步說(shuō)明:
cd /usr/local/src/
tar zxvf?php-5.5.6.tar.gz
cd php-5.5.6
./configure \ //執(zhí)行當(dāng)前目錄下軟件自帶的配置命令
> --prefix=/usr/local/php \ //設(shè)置PHP5 的安裝路徑
> --with-config-file-path=/usr/local/php/etc \ //指定PHP5 配置文件存入的路徑
> --with-apxs2=/usr/local/apache2/bin/apxs \ //告訴PHP 查找Apache 2 的地方
> --with-libxml-dir=/usr/local/libxml2/ \ //告訴PHP 放置libxml2 庫(kù)的地方
> --with-png-dir=/usr/local/libpng/ \ //告訴PHP 放置libpng 庫(kù)的地方
> --with-jpeg-dir=/usr/local/jpeg6/ \ //告訴PHP 放置jpeg 庫(kù)的地方
> --with-freetype-dir=/usr/local/freetype/ \ //告訴PHP 放置freetype 庫(kù)的地方
> --with-gd=/usr/local/gd2/ \ //告訴PHP 放置gd 庫(kù)的地方
> --with-zlib-dir=/usr/local/zlib/ \ //告訴PHP 放置zlib 庫(kù)的地方
> --with-mcrypt=/usr/local/libmcrypt/ \ //告訴PHP 放置libmcrypt 庫(kù)的地方
> --with-mysql ?\ //激活MySQL功能,缺省為mysqlnd
> --with-mysqli \ //變量激活新增加的MySQLi 功能,缺省為mysqlnd
> --enable-soap \ //變量激活SOAP 和Web services 支持
> --enable-mbstring=all \ //使多字節(jié)字符串支持
> --enable-sockets \ //變量激活socket 通信特性
>?--enable-pdo \ //激活pdo
> --with-pdo-mysql ? //激活pdo-mysql,缺省為mysqlnd
?
接下來(lái)就都是重點(diǎn)了
問(wèn)題1:
按照以上配置,make時(shí)可能報(bào)如下錯(cuò)誤:
/usr/local/src/php-5.5.6/ext/gd/gd.c:57:22: error: X11/xpm.h: No such file or directory
make: *** [ext/gd/gd.lo] Error 1
問(wèn)題說(shuō)明:這是提示gd庫(kù)不支持xpm
解決方法:
1.安裝libxpm
yum install libXpm-devel.x86_64
?
2.按照上面的方法重新安裝gd庫(kù)
安裝成功后會(huì)看到如下信息,說(shuō)明gd已經(jīng)支持xpm了:
** Configuration summary for libgd 2.1.0:
?
? ?Support for Zlib: ? ? ? ? ? ? ? ? yes
? ?Support for PNG library: ? ? ? ? ?yes
? ?Support for JPEG library: ? ? ? ? yes
? ?Support for VPX library: ? ? ? ? ?no
? ?Support for TIFF library: ? ? ? ? no
? ?Support for Freetype 2.x library: yes
? ?Support for Fontconfig library: ? no
? ? Support for Xpm library: ? ? ? ? ?yes
? ?Support for pthreads: ? ? ? ? ? ? yes
?
3.再次按照上面的方法安裝php:
問(wèn)題2:
報(bào)錯(cuò):
ext/gd/gd.c:1330: undefined reference to `XpmLibraryVersion'
問(wèn)題說(shuō)明:沒有找到xpm庫(kù)的安裝位置
解決方法:
1.rpm -ql libXpm :查詢出libXpm的安裝位置,發(fā)現(xiàn)在/usr/lib64/ 下
2.重新編譯php,./configure中增加 --with-xpm-dir=/usr/lib64/?
3.make && make install 成功!
?
注意: 現(xiàn)在只安裝了對(duì)mysql的支持,還沒有安裝對(duì)oracle的支持 。
?
安裝成功后,拷貝php配置文件到指定路徑
cp /usr/local/src/php-5.5.6/php.ini-development /usr/local/php/etc/php.ini
以后就修改這個(gè)文件就可以實(shí)現(xiàn)對(duì)php的配置,修改后需要重啟Apache。
?
apache配置支持php:
vi /etc/httpd/httpd.conf:配置如下兩項(xiàng)
<IfModule dir_module>
? ? DirectoryIndex ?index.php ?index.html
</IfModule>
?
<IfModule mime_module>中添加:
? AddType application/x-httpd-php .php?
?
接下來(lái)測(cè)試php是否正確安裝:
cd /usr/local/apache2/htdocs/
新建一個(gè)test.php
<?php
phpinfo();
?>
打開瀏覽器,查看php配置。比如:http://192.168.36.24/test.php
?
如果只是鏈接mysql數(shù)據(jù)庫(kù),上面的配置就足夠了。
?
下面說(shuō)明如何安裝對(duì)oracle的支持:
?1.下載 oracle 客戶端
選擇 Instant Client for Linux x86-64 ?? Version 11.2.0.1.0(不知為何, Version 11.2.0.4.0?rpm安裝時(shí)報(bào)錯(cuò),所以選擇了一個(gè)低版本的 )
? 2.安裝oracle客戶端 (一定要先安裝jdk)
rpm -ivh oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm
?
rpm -ivh oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.rpm
?
echo '/usr/lib/oracle/11.2/client64/lib/' > /etc/ld.so.conf.d/oracle-x86_64.conf
定義環(huán)境變量
vi etc/profile
? ? ? 加入以下幾行
? ?export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
? ?export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64:$LD_LIBRARY_PATH
? ?export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
然后用以下語(yǔ)句使其立即生效
source /etc/profile
?
3.64位系統(tǒng)需要?jiǎng)?chuàng)建32位的軟鏈接
ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client?
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client
?
4.安裝oci8
/usr/local/php/bin/pecl install oci8?
會(huì)提示輸入oracleclient位置,輸入如下內(nèi)容:
instantclient,/usr/lib/oracle/11.2/client/lib
?
安裝有可能失敗 ,如果沒有安裝成功,則會(huì)將擴(kuò)展下載到/tmp/pear/download下(也可以手工下載: http://pecl.php.net/get/oci8-2.0.6.tgz ),
可以使用如下方法安裝:
cd /tmp/pear/download
tar -zxvf oci8-2.0.6.tgz
cd ?oci8-2.0.6
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-oci8= shared, instantclient,/usr/lib/oracle/11.2/client/lib
make
make install
?
安裝成功后會(huì)將oci8擴(kuò)展放入/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/下(oci8.so)
需要手動(dòng)配置到php.ini中
找到extension_dir ,解開注釋,配置上絕對(duì)路徑
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/"
然后增加如下內(nèi)容,即表示啟用oci8擴(kuò)展:
extension=oci8.so
保存后,重啟Apache,查看http://192.168.36.24/test.php進(jìn)行驗(yàn)證。
?
5.安裝pdo-oci
ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1 ?:pdo_oci暫時(shí)不支持11.2,所以這里實(shí)際上是弄個(gè)假象,讓pdo以為這是10.2的版本
?
ln -s /usr/lib/oracle/11.2 /usr/lib/oracle/10.2.0.1
?
/usr/local/php/bin/pecl?install pdo_oci?
會(huì)提示輸入oracleclient位置,輸入如下內(nèi)容:instantclient,/usr,10.2.0.1
?
安裝有可能失敗 ,如果沒有安裝成功,則會(huì)將擴(kuò)展下載到/tmp/pear/download下
可以使用如下方法安裝:
cd /tmp/pear/download
tar -zxvf PDO_OCI-1.0.tgz
cd ?PDO_OCI-1.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-oci=instantclient,/usr,10.2.0.1
ln -s pdo_oci.loT pdo_oci.lo ?: 這個(gè)步驟非常重要,否則make時(shí)會(huì)報(bào)錯(cuò) :make: *** [pdo_oci.lo] Error 1
make
make install
ok,成功,pdo_oci.so已經(jīng)被放入/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/下,
但是,當(dāng)把pdo_oci.so加入到php.ini后,卻發(fā)現(xiàn),根本沒起作用,
于是乎,查看Apache日志,在/usr/local/apache2/logs/error_log中看到如下內(nèi)容:
PHP Warning: ?PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/pdo_oci.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/pdo_oci.so: undefined symbol: PDO_OCI_INIT_MODE in Unknown on line 0
說(shuō)明,我編譯出的pdo_oci.so有問(wèn)題,動(dòng)態(tài)加載不成功,所以我使用靜態(tài)編譯的方式,重新編譯php:
?
cd /usr/local/src/php-5.5.6
?
上次編譯成功的結(jié)果會(huì)被放在config.nice中,所以修改config.nice,
在最后一行"$@"前增加一行:'--with-pdo-oci=instantclient,/usr,10.2.0.1' \
sh?config.nice
make
make install
?
ok,成功!
cp /usr/local/src/php-5.5.6/php.ini-development /usr/local/php/etc/php.ini 并重啟apache。
再次查看http://192.168.36.24/test.php,將看到已經(jīng)支持pdo-oci了。
?
但是發(fā)現(xiàn)不支持oci8了,原因是我們重新安裝了php,修改了php.ini ,所以需要重新在php.ini中增加oci8:
找到extension_dir ,解開注釋,配置上絕對(duì)路徑
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/"
然后增加如下內(nèi)容,即表示啟用oci8擴(kuò)展:
extension=oci8.so
保存后,重啟Apache,查看http://192.168.36.24/test.php進(jìn)行驗(yàn)證。
?
?
當(dāng)然,也可以直接將oci8靜態(tài)編譯進(jìn)php中,?--with-oci8=instantclient,/usr/lib/oracle/11.2/client/lib ?
?
下面給出一個(gè)完整的php編譯信息:
- ./configure?\??
- ?--prefix=/usr/local/php?\??
- ?--with-config-file-path=/usr/local/php/etc?\??
- ?--with-apxs2=/usr/local/apache2/bin/apxs?\??
- ?--with-libxml-dir=/usr/local/libxml2/?\??
- ?--with-png-dir=/usr/local/libpng/?\??
- ?--with-jpeg-dir=/usr/local/jpeg9/?\??
- ?--with-freetype-dir=/usr/local/freetype/?\??
- ?--with-gd=/usr/local/gd2/?\??
- ?--with-zlib-dir=/usr/local/zlib/?\??
- ?--with-mcrypt=/usr/local/libmcrypt/?\??
- ?--with-xpm-dir=/usr/lib64/?\??
- ?--with-mysql?\??
- ?--with-mysqli?\??
- ?--enable-pdo?\??
- ?--with-pdo-mysql?\??
- ?--with-oci8=instantclient,/usr/lib/oracle/ 11.2 /client/lib?\??
- ?--with-pdo-oci=instantclient,/usr, 10.2 . 0.1 ?\??
- ?--enable-soap?\??
- ?--enable-mbstring=all?\??
- ?--enable-sockets???
?
?
至此,php5.5環(huán)境安裝完成。
?
安裝其它擴(kuò)展:
1.memcache
如果需要為php增加memcache擴(kuò)展,按如下方法進(jìn)行:
cd /usr/local/php/bin
./pecl install memcache
?
安裝時(shí)會(huì)提示是否開啟session支持,輸入n,不支持,安裝后路徑如下:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/memcache.so
?
需要手動(dòng)配置到php.ini中,增加如下內(nèi)容,即表示啟用memcache擴(kuò)展:
extension=memcache.so
保存后,重啟Apache,查看http://192.168.36.24/test.php進(jìn)行驗(yàn)證。
?
2.Zend OPCache
?為了提高php運(yùn)行速度,可以啟用Zend OPCache,啟用方法很簡(jiǎn)單,安照上面的方法安裝php,則已經(jīng)在
/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/下生成了opcache.so,只需將其配置到php.ini中即可。
?
vi php.ini
找到[opcache]
在其下面增加:
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/opcache.so
然后打開并配置相應(yīng)的配置項(xiàng)即可,比如:
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=5000
?
opcache.revalidate_freq=60
opcache.load_comments=1
?
保存后,重啟Apache,查看http://192.168.36.24/test.php進(jìn)行驗(yàn)證。會(huì)看到如下信息:
with?Zend?OPcache?v7.0.3-dev,?Copyright?(c)?1999-2013,?by?Zend?Technologies
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
