|
安裝
這節將講述安裝過程中最常見的問題。php 適用于 幾乎任何的 OS (或許 OSX 之前的 MacOS 除外 ), 和幾乎任何的WEB 服務器。
要安裝php, 跟著 發行版里的安裝 文件的指引. Windows 用戶也應該讀install.txt 文件. 這兒也有一些幫助文檔 。 1. Unix/Windows: 我的php.ini 應該放在哪? 2. Unix: 我安裝了 php, 但我每次加載一個文檔, 會得到下面的消息: 'Document Contains No Data'! 怎么回事? 3. Unix: 我使用 RPMS 安裝 php , 但Apache 不支持 php頁面! 怎么辦? 4. Unix: 我使用 RPMS 安裝 php 3 , 但是它沒有我需要的數據庫編譯支持! 我該怎么辦? 5. Unix: 我用 FrontPage 擴展包對Apache打了補丁, 忽然 php 停止工作。 是php 和 Apache FrontPage 包不兼容嗎 ? 6. Unix/Windows: 我安裝了php,但在瀏覽器里看我的php頁面時,空白一片。 7. Unix/Windows: 我安裝了php,但在瀏覽器里看我的php頁面時,我得到一個 server 500 error. 8. 某些操作系統: 我安裝php沒出錯,可是我啟動Apache時,得到一個 undefined symbol errors: [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress9. Windows: 我安裝了php,但在瀏覽器里看我的php頁面, 得到如下錯誤: cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:10. Windows: 我嚴格按照install的要求,可是還是不能讓我的php在IIS下工作。
1. Unix/Windows: 我的php.ini 文件應該放在哪?
UNIX下默認它應該放在 /usr/local/lib 目錄下。 這是它的 <install-path>/lib. 很多人會在編譯時改變它,使用--with-config-file-path 標志。 例如, 你可以這樣設它: --with-config-file-path=/etc然后你可以復制源程序包里的 php.ini-dist 到 /etc/php.ini ,編輯它滿足你的本地化需求。
Windows下 php.ini默認的路徑是 Windows 系統目錄. 如果你在使用 Apache webserver, php.ini 則最先在 Apaches 安裝目錄下被查找, 例如: c:/program files/apache group/apache. 這樣你可以有不同的 php.ini 對應不同版本的 Apache(同一臺機器上)。
更多細節請查閱 configuration file.
2. Unix: 我安裝了 php, 但我每次加載一個文檔, 會得到下面的消息: 'Document Contains No Data'! 怎么回事?
這可能是因為你的 php 發生了core-dumping錯誤。 查找你的服務器錯誤日志文件,看看是否屬于這種情況。 然后報告這個錯誤。如果你知道怎樣使用 'gdb',你可以提供一個 backtrace 在你的錯誤報告里。這將會對開發人員解決 這個問題有很大幫助。如果你是在將php作為Apache模塊使用,那么請按下面的步驟做:
停止 httpd 進程
gdb httpd
停止 httpd 進程
> run -X -f /path/to/httpd.conf
瀏覽你剛才出錯的 URL
> run -X -f /path/to/httpd.conf
如果你還有 core dump, gdb 現在會通知你
打入: bt
在你的 bug report里應該包含backtrace 。 這些會被發往 http://bugs.php.NET/
如果你的腳本使用了正則表達式函數 (ereg() and friends), 你應該確保你編譯 php 和 Apache 用的是同一個正則表達式包。 在 php 和 Apache 1.3.x 這個過程是自動進行的。
3. Unix: 我使用 RPMS 安裝 php , 但Apache 不支持 php頁面! 怎么辦?
假設你安裝了 Apache 和 php(從 RPM ) , 你需要反注釋或者增加一些行在你的 http.conf 文件里: # Extra ModulesAddModule mod_php.cAddModule mod_php3.cAddModule mod_perl.c# Extra ModulesLoadModule php_module modules/mod_php.soLoadModule php3_module modules/libphp3.so /* for php 3 */LoadModule php4_module modules/libphp4.so /* for php 4 */LoadModule perl_module modules/libperl.soAnd add: AddType application/x-httpd-php3 .php3 /* for php 3 */AddType application/x-httpd-php .php /* for php 4 */... 到全局域里, 或者到你想要的 支持php的虛擬域里。
4. 我使用 RPMS 安裝 php 3 , 但是它沒有我需要的數據庫選項支持! 我該怎么辦?
因為 php 3 內建支持的關系, 編譯一個完整的可適于所有應用的 php RPM是相當困難的。 在 php 4有談到這點。 對 php 3, 我們只好建議你使用INSTALL.REDHAT (在 php包里)描述的機制。 如果你一定要使用 RPM 版的 php 3, 讀...
RPM 包管理器設置 RPMS 簡單的安裝,不帶數據庫支持 and 因為RPMS 使用 /usr/ 而不是標準的 /usr/local/ 目錄存放文件. 你需要告訴 RPM 文件你要支持哪種數據庫以及它們的最上級目錄的位置。
下面的例子將解釋在Apache模式下怎樣支持通行的數據庫Mysql.
當然所有的這些可以稍作修改,以支持其它的php支持的數據庫。我們假設你安裝了 MySQL and Apache ,完全是用 RPMS 安裝的。
首先,移去 mod_php3 : rpm -e mod_php3
然后取得rpm包并安裝, 不是 --重編譯 rpm -Uvh mod_php3-3.0.5-2.src.rpm
編輯/usr/src/redhat/SPECS/mod_php3.spec 文件
在 %build 一節里增加你想要的數據庫支持, 以及路徑信息。
對 MySQL 你應該增加: --with-mysql=/usr /%build 節看起來象: ./configure --prefix=/usr / --with-apxs=/usr/sbin/apxs / --with-config-file-path=/usr/lib / --enable-debug=no / --enable-safe-mode / --with-exec-dir=/usr/bin / --with-mysql=/usr / --with-system-regex
改動完成后,象下面這樣重編rpm : rpm -bb /usr/src/redhat/SPECS/mod_php3.spec
Then install the rpm rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm重啟 Apache,你已經得到了rpm下的Mysql的支持。 注意到這種做法比你重新得到一個 php 3 的tarball 代碼,按照 INSTALL.REDHAT 的指引一步一步做要容易得多。
5. Unix: 我用 FrontPage 擴展包對Apache打了補丁, 忽然 php 停止工作。 是php 和 Apache FrontPage 包不兼容嗎 ?
不是, php 和 FrontPage擴展包運行得很好.。問題是FrontPage 包修改了幾個Apache 結構參數,而php要用到它們.在FrontPage擴展包被打上后, 重新編譯 php (使用 'make clean ; make') ,會解決這個問題。
6. Unix/Windows: 我安裝了php,但在瀏覽器里看我的php頁面時,空白一片。
在瀏覽器里用'查看源文件'看你的腳本,你可能會發現你看到的是源程序。 這表示 web server 并沒有送腳本到php去執行。肯定是服務器配置上哪兒出了錯。 仔細檢查php安裝的 server 配置。
7. Unix/Windows: 我安裝了php,但在瀏覽器里看我的 php頁面時,我得到一個 server 500 error。
這是服務器在運行 php 時發生了錯誤。 為了看到可讀的錯誤信息,在命令行,改變目錄到 (php.exe Windows)所在目錄, 運行 php -i. 如果有任何問題,詳細的錯誤信息就顯示出來了,它會告訴你下一步該做什么。 如果你得到滿屏的HTML代碼 (phpinfo() 函數的輸出), 那么php工作正常,這個錯誤就是由于服務器配置引發的,應該仔細檢查。
8. 某些操作系統: 我安裝php沒出錯,可是我啟動Apache時,得到一個 undefined symbol errors: [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
這個問題其實與 php 無關, 而與 MySQL 客戶端庫有關。 --with-zlib,有些操作系統需要,而有些不需要。MySQL FAQ已經講述了這個問題。
9. Windows: 我安裝了php,但在瀏覽器里看我的php頁面, 得到如下錯誤: cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
這是 php 根本沒有產生任何輸出。 為了看到可讀的錯誤信息,在命令行,改變目錄到 (php.exe Windows)所在目錄, 運行 php -i. 如果有任何問題,詳細的錯誤信息就顯示出來了,它會告訴你下一步該做什么。 如果你得到滿屏的HTML代碼 (phpinfo() 函數的輸出), 那么php工作正常。
一旦php在命令行模式下工作,再看看你的腳本程序, 它還是失敗,可能是因為以下原因:
你的php腳本的權限許可。 php.exe, php4ts.dll, php.ini 或者任何你可能裝入的php文件,它樣都必須能被匿名 interNET 用戶 ISUR_<machinename> 訪問。
腳本文件根本不存在(或者不是你認為的位置。)請注意在IIS里,你能夠阻塞這個錯誤,做法是在設置腳本映射目錄時, 選上'check file exists'框。這樣如果腳本不存在,服務器會返回一個404錯誤。 這樣做也有其它的一些好處, 就是IIS僅為你做經過授權的操作。
10. Windows: 我嚴格按照install的要求做,可是還是不能讓我的php在IIS下工作。
確定任何想要運行php的用戶有操作php.exe的權限! IIS 使用匿名的interNET用戶,它是在IIS安裝時系統自動增加的。 這個用戶需要操作 php.exe的權限. 還有,任何需要授權的用戶也必須有訪問 php.exe的權限。 在 IIS4下,你要告訴它php是一個腳本引擎。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。