apache php 整合

來源:互聯網
上載者:User
  官方參考地址  軟體:(紅色為必做項目)httpd 2.2.14  php 5.2.17   安裝步驟:  
  1. 構建並安裝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,它將使得你的系統得到實際的效能改善。 
    )
  2. 現在已經將 Apache 2.x.NN 安裝在 /usr/local/apache。本安裝支援可裝載模組 和標準的 MPM prefork。之後,可以使用如下命令啟動 Apache 伺服器:

    /usr/local/apache2/bin/apachectl start

    如果成功,可以停止 Apache 伺服器並繼續安裝 PHP:

    /usr/local/apache2/bin/apachectl stop
  3. 現在需要配置並構建 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 等等。

  4. 配置 php.ini

    cp php.ini-development /usr/local/lib/php.ini

    可以編輯 php.ini 來設定 PHP 運行時的選項。如果想要把此檔案放到另外的位置, 需要在步驟 10 添加 --with-config-file-path=/path 選項。

    如果選擇了php.ini-production,請務必閱讀其中的變更的列表,它們將影響 PHP 的執行。

  5. 編輯 httpd.conf 檔案以調用 PHP 模組。LoadModule 運算式右邊的路徑必須指向 系統中的 PHP。以上的 make install 命令可能已經完成了這些,但務必要檢查。

    LoadModule php5_module modules/libphp5.so
  6. 告知 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 源碼過濾器,因為這可能泄露系統機密或者嵌入的代碼中的敏感資訊。

  7. 按照通常的方式啟動 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.