官方參考地址 軟體:(紅色為必做項目)httpd 2.2.14 php 5.2.17 安裝步驟:
構建並安裝Apache。請參考Apache安裝文檔瞭解構建Apache的更多細節。
cd httpd-2_x_NN./configure --enable-somakemake install
其他(
./configure --prefix=/usr/local/apache-2.2.15 --enable-so --enable-mods-shared=most --with-mpm=worker
[root@test-AS4 httpd-2.2.15]# make
[root@test-AS4 httpd-2.2.15]# make install
# --prefix=<Install_Path> 指明編譯後的二進位檔案安裝到<Install_Path>目錄,用實際安裝路徑替換<Install_Path>,如--prefix=/usr/local/apache-2.2.15 ,如果省略此配置參數,預設安裝到/usr/local/apache2目錄。
# --enable-so 指明編譯動態載入模組(DSO)支援到httpd二進位檔案,此模組使得Apache的各功能模組可以與核心分開編譯、運行時動態載入。有了DSO支援,升級和增加模組時只需編譯相關的模組即可,不必重新編譯整個系統。最新版本的Apache預設編譯此模組到httpd二進位檔案,如果你在使用早期版本的apache並且需要DSO支援,可能要明確指出此選項。
# --enable-mods-shared=<MODULE-LIST> 明確指明要以DSO方式編譯的模組,<MODULE-LIST>為空白格分隔的模組名列表、all或者most,all表示包含所有模組,most表示包含大部分模組,如--enable-mods-share="rewrite deflate",--enable-mods-share=most,效果等同於多個--enable-<FEATURE>=share
# --with-mpm=<MPM> 先擇Apache多路處理模組,<MPM>={beos|event|worker|prefork|mpmt_os2},prefork為Unix系統下預設處理模組,它將運行一個非線程型的、預派生的Web伺服器,適合於沒有安全執行緒庫,需要避免線程相容性問題的系統,它是要求將每個請求相互獨立的情況下最好的MPM,這樣若一個請求出現問題就不會影響到其他請求。worker為支援混合的多線程多進程的多路處理模組,由於使用線程來處理請求,所以可以處理海量請求,而系統資源的開銷小於基於進程的MPM,同時,它也使用了多進程,每個進程又有多個線程,以獲得基於進程的MPM的穩定性。如果你的系統是基於安全執行緒的,那麼筆者建議使用worker替代prefork,它將使得你的系統得到實際的效能改善。
)
現在已經將 Apache 2.x.NN 安裝在 /usr/local/apache。本安裝支援可裝載模組 和標準的 MPM prefork。之後,可以使用如下命令啟動 Apache 伺服器:
/usr/local/apache2/bin/apachectl start
如果成功,可以停止 Apache 伺服器並繼續安裝 PHP:
/usr/local/apache2/bin/apachectl stop
現在需要配置並構建 PHP。在這裡可以用各種各樣的參數來自訂PHP,例如啟動哪些 擴充功能包的支援等。用 ./configure --help 命令可以列出當前可用的所有參 數。在此例中,將給出一個在有 MySQL 支援的 Apache 2 上進行配置的範例。
如果按照上面的說明從原始碼構建了Apache,下面的例子會正確匹配apxs的路徑。如果通過其他方式安裝了Apache,需要相應的調整apxs的路徑。注意,在有些發行版本中,可能將apxs更名為apxs2。
cd ../php-NN./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqlmakemake install
如果決定在安裝後改變更配置置選項,只需重複最後的三步configure, make, 以及 make install,然後需要重新啟動 Apache 使新模組生效。Apache不需要重新編譯。
請注意,除非明確有提示,否則“make install”命令將安裝 PEAR、各種 PHP 工具 諸如 phpize,安裝 PHP CLI 等等。
配置 php.ini
cp php.ini-development /usr/local/lib/php.ini
可以編輯 php.ini 來設定 PHP 運行時的選項。如果想要把此檔案放到另外的位置, 需要在步驟 10 添加 --with-config-file-path=/path 選項。
如果選擇了php.ini-production,請務必閱讀其中的變更的列表,它們將影響 PHP 的執行。
編輯 httpd.conf 檔案以調用 PHP 模組。LoadModule 運算式右邊的路徑必須指向 系統中的 PHP。以上的 make install 命令可能已經完成了這些,但務必要檢查。
LoadModule php5_module modules/libphp5.so
告知 Apache 將特定的副檔名解析成 PHP,例如,讓 Apache 將副檔名 .php 解析成 PHP。為了避免潛在的危險,例如上傳或者建立類似exploit.php.jpg的檔案並被當做 PHP 執行,我們不再使用 Apache 的 AddType 指令來設定。參考下面的例子,你可以簡單的將需要的副檔名解釋為 PHP。我們示範為增加.php。
<FilesMatch \.php$> SetHandler application/x-httpd-php</FilesMatch>
或者,你也想將 .php, .php2, .php3, .php4, .php5, .php6, 以及 .phtml 檔案都當做 PHP 來運行,我們無需額外的設定,僅需按照下面這樣來:
<FilesMatch "\.ph(p[2-6]?|tml)$"> SetHandler application/x-httpd-php</FilesMatch>
然後,可以將 .phps 檔案由 PHP 源碼過濾器處理,使得其在顯示時可以高亮源碼,設定如下:
<FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source</FilesMatch>
mod_rewrite 也有助於將那些不需要啟動並執行 .php 檔案的源碼高亮顯示,而並不需要將他們更名為 .phps 檔案:
RewriteEngine OnRewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
不要在正式生產運營的系統上啟動 PHP 源碼過濾器,因為這可能泄露系統機密或者嵌入的代碼中的敏感資訊。
- 按照通常的方式啟動 Apache 服務:
/usr/local/apache2/bin/apachectl start
red hat 下安裝錯誤:
/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2419: undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
參考地址:
http://hi.baidu.com/ostech/blog/item/a63f9b0dabed1ae7ab6457d0.html
解決方案:
#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
#tar -zxvf libiconv-1.13.1.tar.gz
#cd libiconv-1.13.1
# ./configure --prefix=/usr/local/libiconv
# make
# make install
再檢查php
./configure --with-curl --with-apxs2=/usr/local/apache2/bin/apxs --enable-sockets --with-iconv=/usr/local/libiconv
參考:
#./configure --with-mysql=/backup/mysql --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-curl --with-gd --enable-gd-native-ttf
--with-apxs2=/usr/local/apache/bin/apxs --enable-sockets --with-iconv=/usr/local/libiconv
#make
#make install
另一種解決方案為去除iconv模組也能正常編譯php,如下:
編輯 Makefile 大約 77 行左右的地方:
EXTRA_LIBS = ..... -lcrypt
在最後加上 -liconv,例如:
EXTRA_LIBS = ..... -lcrypt -liconv
再運行make就可以了。
最後一種方法:由tonyty163提供:
#make ZEND_EXTRA_LIBS='-liconv'
#make install
注意php.ini許可權問題
mysql-devel-5.1.47-4.el6.x86_64
mysql-server-5.1.47-4.el6.x86_64
mysql-libs-5.1.47-4.el6.x86_64
mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
mysql-5.1.47-4.el6.x86_64