[TOC]
本節包括在 Unix 平臺的 Apache 下安裝 PHP 的說明和提示。我們在另外的頁面也有 [Apache 2](247732) 的安裝和說明。
可以從核心配置選項列表以及位于手冊對應部分的特定擴展配置選項中選擇參數并在安裝步驟第 10 步將它們添加到 configure 命令中。版本號在這里被省略了以保證此說明的正確性。需要將這里的“xxx”替換為自己使用的文件的正確值。
## PHP 的 Apache 共享模塊版本安裝說明
~~~
gunzip apache_xxx.tar.gz
2. tar -xvf apache_xxx.tar
3. gunzip php-xxx.tar.gz
4. tar -xvf php-xxx.tar
5. cd apache_xxx
6. ./configure --prefix=/www --enable-module=so
7. make
8. make install
9. cd ../php-xxx
10. 現在,配置 PHP。這是定制 PHP 的不同選項的時候,例如要加載哪些擴展庫。使用
./configure --help
來列出可用的選項。在下面的示例中只是簡單地配置 Apache 1 和 MySQL 支持。
用戶的 apxs 的路徑可能和此示例中的不同。
./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install
如果在安裝之后決定修改配置選項,那么只需重復以上最后三步。只須重新啟動
Apache 就可以使新模塊生效。不需要重新編譯 Apache。
注意除非特別指出,“make install”總是會安裝 PEAR,各種 PHP 工具例如 phpize,
PHP CLI 以及其它。
13. 建立 php.ini 文件。
cp php.ini-dist /usr/local/lib/php.ini
可以編輯 php.ini 來設置 PHP 選項。如果想把 php.ini 放在其它目錄,在第
10 步加上以下選項:
--with-config-file-path=/path
如果選擇了 php.ini-production,確保閱讀一下其中的變更說明,因為這些會
影響到 PHP 的行為。
14. 編輯 httpd.conf 來加載 PHP 模塊。在 LoadModule 語句右邊的路徑必須指向系統中
PHP 模塊所在的路徑。上面的 make install 步驟可能已經添加了,但還是檢查確認一下。
LoadModule php5_module libexec/libphp5.so
15. 在 httpd.conf 中加入 AddModule 部分,在 ClearModuleList 下面的某處,加上這一句:
AddModule mod_php5.c
16. 告訴 Apache 將哪些后綴作為 PHP 解析。例如,讓 Apache 把 .php 后綴的文件解析為
PHP。可以將任何后綴的文件解析為 PHP,只要在以下語句中加入并用空格分開。這里以
添加一個 .phtml 來示例。
AddType application/x-httpd-php .php .phtml
為了將 .phps 作為 PHP 的源文件進行語法高亮顯示,還可以加上:
AddType application/x-httpd-php-source .phps
17. 用通常的過程啟動 Apache(必須完全停止 Apache 再重新啟動,而不是用 HUP 或者
USR1 信號使 Apache 重新加載)。
~~~
也可以將 PHP 作為靜態對象來安裝:
## PHP 的 Apache 靜態模塊版本安裝說明
~~~
gunzip -c apache_1.3.x.tar.gz | tar xf -
2. cd apache_1.3.x
3. ./configure
4. cd ..
5. gunzip -c php-5.x.y.tar.gz | tar xf -
6. cd php-5.x.y
7. ./configure --with-mysql --with-apache=../apache_1.3.x
8. make
9. make install
10. cd ../apache_1.3.x
11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
(上面一行是正確的!是的,我們知道 libphp5.a 尚不存在,還不到時候,
它會在之后被創建。)
12. make
(現在應該有一個 httpd 二進制文件,可以將它復制到 Apache bin 目錄。如果這是
第一次安裝,還要“make install”。)
13. cd ../php-5.x.y
14. cp php.ini-development /usr/local/lib/php.ini
15. 可以編輯 /usr/local/lib/php.ini 文件以設置 PHP 選項。編輯 httpd.conf 或
srm.conf 文件,添加:
AddType application/x-httpd-php .php
~~~
根據 Unix 系統和 Apache 安裝方法的不同,有很多方法停止和重啟動 Apache。以下是一些不同的 Apache/UNIX 下重啟動 Apache 的典型命令。需要把 /path/to/替換成自己系統上的確切路徑。
## 重啟動 Apache 的示例命令
~~~
在一些 Linux 和 SysV 的變種下:
/etc/rc.d/init.d/httpd restart
2. 使用 apachectl 腳本:
/path/to/apachectl stop
/path/to/apachectl start
3. httpdctl 和 httpsdctl(使用了 OpenSSL),類似 apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start
4. 使用了 mod_ssl,或其他 SSL 服務器,可能需要手工重啟動:
/path/to/apachectl stop
/path/to/apachectl startssl
~~~
apachectl 和 http(s)dctl 程序所在的路徑在不同系統中通常不一樣。如果系統中有 locate 或者 whereis 或者 which 命令,那么可以幫助找到這些控制程序。
## 編譯 PHP 和 Apache 的不同例子:
~~~
./configure --with-apxs --with-pgsql
~~~
此配置將生成在 Apache 的 httpd.conf 文件中用 LoadModule 加載的 libphp5.so 共享庫。而 PostgreSQL 支持將嵌入到此共享庫中。
~~~
./configure --with-apxs --with-pgsql=shared
~~~
此配置將生成 Apache 的 libphp5.so 共享庫,并且還生成 pgsql.so 共享庫,可以在 php.ini 文件中用 extension 指令加載,或者在 PHP 腳本中用 dl() 函數明確地加載。
~~~
./configure --with-apache=/path/to/apache_source --with-pgsql
~~~
此配置將生成一個 libmodphp5.a 庫,一個 mod_php5.c 和一些相關的文件并且拷貝到 Apache 源程序目錄中的 src/modules/php5目錄下。然后用 --activate-module=src/modules/php5/libphp5.a 編譯 Apache,Apache 編譯系統會生成 libphp5.a 并且將其靜態地連接到 httpd 程序中。PostgreSQL 支持也直接包括在這個 httpd 程序中了,因此最終結果是單一的一個包括了所有 Apache 和 PHP 支持的 httpd 可執行文件。
./configure --with-apache=/path/to/apache_source --with-pgsql=shared
此配置和上面一樣——除了沒有在最后的 httpd 可執行文件中包括 PostgreSQL 的支持以及生成了一個 pgsql.so 共享庫以外。該共享庫可以在 php.ini 文件中或者用 dl() 函數加載。
當選擇不同的方法編譯 PHP 時,需要考慮每種方法的優勢和缺點。用共享對象方式編譯 PHP 意味著可以單獨編譯 Apache,并且不用在添加或修改了 PHP 的時候重新編譯所有程序。用內置方法編譯 PHP(靜態方式)意味著 PHP 可以加載和運行得更快。更多信息見 Apache 的 ? DSO 支持頁面。
Note:
Apache 默認的 httpd.conf 文件中目前包括類似如下的內容:
~~~
User nobody
Group "#-1"
~~~
除非把它修改成“Group nogroup”或者其它類似的(“Group daemon”也很通用),PHP 將不能打開文件。
Note:
確認在使用 --with-apxs=/path/to/apxs 時指向 Apache 安裝后的目錄中的包含 apxs。絕對不能用 Apache 源程序中的 apxs 而要用安裝后的 apxs。
- 入門指引
- 簡介
- PHP是什么
- PHP能做什么
- 簡明教程
- 學PHP需要什么
- 我的第一個PHP頁面
- 實用的PHP腳步
- PHP是如何處理表單的
- 在新版本的PHP如何實用舊的PHP代碼
- 下一步需要做什么
- PHP語言參考
- PHP基本語法
- PHP標記
- PHP多進程管理-pcntl_fork
- PHP文件上傳易犯錯誤
- PHP從HTML中分離
- PHP的指令分隔符
- PHP序列化serialize
- PHP類常量
- PHP Traits
- 從 HTML 中分離
- 注釋
- PHP數據類型
- PHP支持的類型簡介
- 布爾類型(Boolean)就是易經知識
- 整型(integer)即整數
- 浮點型(float)
- 字符串(string)
- 數組(Array)
- 對象(object)一定要搞
- 資源類型(resource)
- PHP安裝與環境配置
- 安裝前需要考慮的事項
- Unix系統下安裝PHP
- Unix 系統下安裝 Apache 1.3.x
- Unix 系統下安裝 Apache 2.x
- Unix 系統下安裝 Nginx 1.4.x
- Unix 平臺安裝 Lighttpd 1.4
- Sun Solaris 上的 Sun、iPlanet 和 Netscape 服務器
- CGI 命令行設置
- 針對 HP-UX 平臺的安裝提示
- 在 OpenBSD 系統下的安裝PHP
- Debian GNU/Linux 安裝說明
- 在Mac OS X 系統下安裝PHP
- 使用軟件包
- 使用內置的 PHP
- Windows 系統下的安裝
- 云計算平臺上的安裝
- Microsoft Azure
- 在亞馬遜(Amazon EC2)安裝PHP
- PHP語法參考
- 類型
- NULL
- Callback 回調類型
- 本文檔中使用的偽類型與變量
- 類型轉換的判別
- PHP 類型比較表
- 常量和變量
- 語法基礎
- 預定義變量
- 變量范圍
- 可變變量
- 外部變量
- 常量
- 語法
- 魔術常量
- PHP表達式&運算符
- 賦值運算符
- 位運算符
- 比較運算符
- 錯誤控制運算符
- 執行運算符
- 遞增/遞減運算符
- 邏輯運算符
- 字符串運算符
- 數組運算符
- 類型運算符
- 流程控制
- continue
- switch
- declare
- return
- require
- include
- require_once