關於給apache新增PHP擴充套件的方法
關於給apache新增PHP擴充套件的方法
近期,php官方報出php所有版本都有漏洞,我們的官網也存在該漏洞,於是我用了好幾天的時間,才弄明白php更新的方法。
我們官網php的版本是5.3.3,於是我將其更新到了最新版本5.6.9。
今天寫此文,是為了記錄我這次安裝php的方法,以便搜尋到此文的人給予參考。
php 官方下載地址
php的安裝方法
cd /root/soft/php-5.6.9
./configure --prefix=/usr/local/php5 --enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php5 --with-mysql=/usr/local/mysql/
注意,php mysql這個擴充套件包一定要裝,否則你透過apache訪問的web頁面是空白頁。
如果報configure: error: xml2-config not found. Please check your libxml2 installation.
用 yum install libxml2 libxml2-devel -y來解決
make
make install
建立php的配置檔案 php.ini
cp /usr/loacl/php-5.6.9/php.ini-dist /usr/local/php5/php.ini
讓apache能解釋php語言編寫的網頁檔案
vim /usr/local/apache2/conf/httpd.conf
LoadModule php5_module modules/libphp5.so
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html
重啟web服務讓上面的設定生效
cd /usr/local/apache2/bin
./apachectl stop
./apachectl start
編寫 php 測試檔案
cat ../htdocs/a.php
<!--?php
phpinfo();
?>
訪問web服務上的.php頁面
[root@www bin]# elinks --dump http://192.168.18.210/a.php
顯示php資訊為正常
[root@www bin]# elinks --dump http://192.168.18.210
測試php連線mysql伺服器
elinks --dump http://192.168.18.210/reg.php
cat reg.php
<!--?php
$links=mysql_connect("localhost","root","");
if($links){
echo "link db ok!!!";
}
else{
echo "link db no!!!";
}
?>
檢視載入了哪些模組(擴充套件):
[root@hnagpsrvbj01 bin]# /usr/local/php5/bin/php -m
[PHP Modules]
Core
ctype
date
dom
ereg
fileinfo
filter
hash
iconv
json
libxml
mbstring
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
[Zend Modules]
檢視php版本
/usr/local/php5/bin/php –v
手工新增php擴充套件
根據生產系統php –m擴充套件的對比,手工新增新版本php的擴充套件。
###################
1、安裝php soap擴充套件
Linux下安裝soap模組
安裝完php後最好保留當時安裝的檔案,比如/usr/local/php-5.3.2
檢視soap模組是否安裝的辦法:在php的安裝目錄下執行php -m來檢視
如:/usr/local/php/bin/php -m |grep ‘soap’
如果沒有安裝,則進入php的安裝原始檔夾
cd /root/soft/php-5.6.9/ext/soap/
進入後在此執行phpize命令,生成configur檔案
/usr/local/php5/bin/phpize
如果上面報錯Cannot find autoconf,如下解決:yum -y install autoconf
然後再執行上述命令就不會報錯了。
檢視資訊是否有出錯,沒有出錯的話執行如下命令:
./configure -with-php-config=/usr/local/php5/bin/php-config -enable-soap
然後是安裝編譯
make
最後是安裝
make install
安裝好之後會提示soap.so檔案的儲存路徑
編譯後的soap.so檔案儲存在了/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/目錄下,接著修改php.ini檔案
手工修改:查詢/usr/local/php5/php.ini中的extension_dir = “./”,預設是註釋掉的
修改為extension_dir = “/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/”
並在此行後增加如下,然後儲存:
extension = “soap.so”
重新啟動apache,在執行php -m就已經能看到擴充套件的soap模組了。
如果還要安裝擴充套件別的模組可以以此類推。
參考文件:
#####################
2、下面開始手工編譯bz2擴充套件。
[root@hnagpsrvbj01 bz2]# cd /root/soft/php-5.6.9/ext/bz2
[root@hnagpsrvbj01 bz2]# /usr/local/php5/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
看到上面報錯了,如下解決:yum -y install autoconf
然後再執行上述命令就不會報錯了。
接下來:
[root@hnagpsrvbj01 bz2]# ./configure -with-php-config=/usr/local/php5/bin/php-config
如果報configure: error: Please reinstall the BZip2 distribution 錯誤,那就yum install bzip2
yum install bzip2-devel 來解決。
小知識:devel是擴充套件的意思。
vi /usr/local/php5/php.ini
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/"
extension = "bz2.so"
:wq
[root@hnagpsrvbj01 ~]# /usr/local/php5/bin/php -m |grep bz2
bz2
看到上面說明安裝擴充套件bz2成功。
##########################
3、安裝odbc擴充套件的方法
cd /root/soft/php-5.6.9/ext/odbc/
/usr/local/php5/bin/phpize
./configure --with-php-config=/usr/local/php5/bin/php-config
但是我安裝php的odbc模組一直不成功,提示:
checking for Adabas support... cp: cannot stat `/usr/local/lib/odbclib.a': No such file or directory
configure: error: ODBC header file '/usr/local/incl/sqlext.h' not found!
試了各種辦法和引數都還是這樣,正好又看到還有一個pdo_odbc模組,就準備用pdo_odbc了:
編譯安裝php的pdo_odbc模組
yum install unixODBC-devel
cd /root/soft/php-5.6.9/ext/pdo_odbc
/usr/local/php5/bin/phpize
./configure --with-php-config=/usr/local/php5/bin/php-config --with-pdo-odbc=unixODBC,/usr
make
make install
vi php.ini
加入一行:
extension = "pdo_odbc.so"
重啟web服務就可以透過phpinfo()看到pdo_odbc模組了。
#######################
4、安裝擴充套件php ldap
cd /root/soft/php-5.6.9/ext/ldap
/usr/local/php5/bin/phpize
./configure --with-php-config=/usr/local/php5/bin/php-config
如果報錯configure: error: Cannot find ldap.h,用yum -y install openldap openldap-devel來解決。
如果報configure: error: Cannot find ldap libraries in /usr/lib,提示在/usr/lib 下找不到相關模組,這是因為64位的linux預設把以
上檔案都存在 /usr/lib64 資料夾下。
解決方法:
cp -frp /usr/lib64/libldap* /usr/lib/
重新configure即可。
make
make install
##########################
5、安裝php curl擴充套件
cd /root/soft/php-5.6.9/ext/curl
/usr/local/php5/bin/phpize
./configure --with-php-config=/usr/local/php5/bin/php-config
如果報如下錯誤:
checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
easy.h should be in /include/curl/
其實就是curl的dev包沒有安裝, 解決方案:
# yum -y install curl-devel
make
make install
########################
6、安裝gmp擴充套件
[root@hnagpsrvbj01 ext]# cd gmp/
[root@hnagpsrvbj01 gmp]# /usr/local/php5/bin/phpize
[root@hnagpsrvbj01 gmp]# ./configure --with-php-config=/usr/local/php5/bin/php-config
如果報configure: error: Unable to locate gmp.h, 用yum install gmp-devel解決。
make
make install
####################
7、安裝readline擴充套件
[root@hnagpsrvbj01 ext]# cd readline/
[root@hnagpsrvbj01 readline]# /usr/local/php5/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@hnagpsrvbj01 readline]# ./configure --with-php-config=/usr/local/php5/bin/php-config
如果報configure: error: Please reinstall libedit - I cannot find readline.h,用yum install readline-devel來解決。
#####################################
8、新增php mysql擴充套件的方法:
cd /root/soft/php-5.6.9/ext/mysql
/usr/local/php5/bin/phpize
[root@centos-msgw2 mysql]# ./configure -with-php-config=/usr/local/php5/bin/php-config --with-mysql=/usr/
如果報configure: error: Cannot find MySQL header files under /usr/.
用yum -y install mysql-devel 來解決 mysql-devel就是mysql客戶端。
如果報如下錯誤,
configure: error: Cannot find libmysqlclient under /usr.
Note that the MySQL client library is not bundled anymore!
PHP預設是去/usr/lib/搜尋,所以沒有找到.
解決辦法就是:
cp /usr/lib64/mysql/* /usr/lib/mysql/
然後進行./configure即可,如果伺服器沒有/usr/lib/mysql/ 目錄,則在/usr/lib/目錄下建立mysql目錄
###################################
9 、安裝pdo_mysql擴充套件的方法
cd /root/soft/php-5.6.9/ext/pdo_mysql
/usr/local/php5/bin/phpize
[root@hnagpsrvbj01 pdo_mysql]# ./configure --with-php-config=/usr/local/php5/bin/php-config --with-pdo-mysql=/usr
make
make install
############################
10、安裝gd
2015年8月10日更新安裝gd的方法:
今天集團官網有個留言板的頁面的驗證碼圖片不顯示,經過和開發商的諮詢,原來是由於php的擴充套件gd沒有裝好,更具體的說是php gd的jpeg沒有裝。因為版權的問題,GD原始碼安裝從2.0.33開始沒有jpeg了。如果裝jpeg,就需要自己另外下載安裝。
這兩個軟體包的下載地址是:
下載完後,先安裝jpeg,再安裝libgd,最後安裝php-gd
A、安裝jpeg
cd jpeg-9a/
./configure --prefix=/usr/local/jpeg --enable-shared
make
make install
如果報configure:
error: png.h not found.用yum install libpng libpng-devel libjpeg-devel來解決
B、安裝libgd
cd libgd-2.1.0
./configure --prefix=/usr/local/gd --enable-shared --with-jpeg=/usr/local/jpeg
--with-png --with-zlib
1024 make
1025 make install
C、安裝php-gd
cd /root/soft/php-5.6.9/ext/gd
/usr/local/php5/bin/phpize
./configure --with-php-config=/usr/local/php5/bin/php-config
--with-jpeg-dir=/usr/local/jpeg
make
make install
如果你操作完上面的三個步驟後,發現驗證碼圖片還是不顯示,那麼就在/root/soft/php-5.6.9/ext/gd目錄下執行make clean,然後再按照上述的C步驟重新安裝gd。
檢視phpinfo,gd應該包含如下資訊。
另外為了讓顯示phpinfo的資訊,需要在/var/www/html的網站根目錄下的 .htaccess 加個a.php
RewriteEngine on
RewriteCond $1
!^(index\.php|a.php|kindeditor|admin|assets|uploads|en|css|js|components|img|_backend|_common|hna2013|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
#####################
#####################
關於以下的擴充套件安裝方法,筆者就不再這裡寫了,相信大家能夠自己安裝了。
calendar
exif
ftp
gd
gettext
openssl
pcntl
shmop
sockets
wddx
xmlrpc
xmlwriter
xsl
zip
zlib
mysql
mysqli
odbc
pdo_mysql
PDO_ODBC
###############
集團官網有三個擴充套件沒有安裝,發現不影響業務應用。那就先不裝了。
mysqli
odbc
pdo_mysql
###############
所有php擴充套件安裝完後,在php.ini中新增目錄如下幾行。
vi /usr/local/php5/php.ini
新增如下幾行:
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/"
extension = soap.so
extension = gd.so
extension = xmlrpc.so
extension = "pdo_odbc.so"
extension = "ldap.so"
extension = "bz2.so"
extension = "calendar.so"
extension = "curl.so"
extension = "exif.so"
extension = "ftp.so"
extension = "gettext.so"
extension = "gmp.so"
extension = "pcntl.so"
extension = "readline.so"
extension = "shmop.so"
extension = "sockets.so"
extension = "wddx.so"
extension = "xsl.so"
extension = "zip.so"
extension = "zlib.so"
extension = "mysql.so"
extension = "openssl.so"
完
附件列表
相關文章
- 新增php擴充套件PHP套件
- 新增php的memcached擴充套件模組PHP套件
- laragon 新增 PHP_Redis 擴充套件GoPHPRedis套件
- php新增pcntl擴充套件(Linux)PHP套件Linux
- Laragon新增PHP_Redis擴充套件GoPHPRedis套件
- 為PHP新增mcrypt擴充套件模組PHP套件
- PHP新增zip&&curl擴充套件PHP套件
- centos下為php新增gd擴充套件CentOSPHP套件
- Linux下為PHP新增FTP擴充套件LinuxPHPFTP套件
- docker內給php安裝zmq擴充套件DockerPHPMQ套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- 基於PHP擴充套件的WAF實現PHP套件
- redis的PHP擴充套件包安裝方法RedisPHP套件
- CentOS 系統下 PHP 怎麼新增擴充套件?CentOSPHP套件
- Linux下給PHP安裝amqp擴充套件LinuxPHPMQ套件
- 給PHP安裝和開啟curl擴充套件PHP套件
- php ubuntu 擴充套件PHPUbuntu套件
- 關於Interceptor擴充套件問題套件
- 給linux新增磁碟並擴充套件邏輯卷Linux套件
- C# 擴充套件方法 借籤於 Objective-C 擴充套件類.C#套件Object
- 關於使用擴充套件包的問題。套件
- ES6物件的擴充套件及新增方法。物件套件
- 關於block的ITL和dump的擴充套件BloC套件
- 開發php擴充套件PHP套件
- PHP 擴充套件安裝PHP套件
- PHP7擴充套件PHP套件
- 編寫基於PHP擴充套件庫的後門PHP套件
- 基於PCNTl擴充套件的PHP多程式管理庫套件PHP
- php7安裝redis擴充套件和memcache擴充套件PHPRedis套件
- php mysqli擴充套件庫的使用PHPMySql套件
- 安裝PHP的memcache擴充套件PHP套件
- 給php加擴充包PHP
- Centos6下給PHP安裝Qconf擴充套件CentOSPHP套件
- 關於基於 Jdon+Disruptor 的 橫向擴充套件套件
- PHP安裝redis擴充套件PHPRedis套件
- php amqp擴充套件安裝PHPMQ套件
- (MAC) PHP擴充套件安裝MacPHP套件
- Go開發PHP擴充套件GoPHP套件