PHP安裝十大經典問題

 

1. unix/windows: 我的php.ini 文件應該放在哪?unix下默認它應該放在 /usr/local/lib 目錄下。這是它的 /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 i6>

如果你還有 core dump, gdb 現在會通知你 

打入:

在你的 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.so

and 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 4 *88r:<P? 

然後取得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 w o!t"iYOU 

改動完成後,象下面這樣重編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 A?

重啓 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_ 訪問。

腳本文件根本不存在(或者不是你認爲的位置。)請注意在iis裏,你能夠阻塞這個錯誤,做法是在設置腳本映射目錄時, 選上'check file exists'框。這樣如果腳本不存在,服務器會返回一個404錯誤。 這樣做也有其它的一些好處, 就是iis僅爲你做經過授權的操作。

10. windows: 我嚴格按照install的要求做,可是還是不能讓我的php在iis下工作。

確定任何想要運行php的用戶有操作php.exe的權限! iis 使用匿名的internet用戶,它是在iis安裝時系統自動增加的。這個用戶需要操作 php.exe的權限. 還有,任何需要授權的用戶也必須有訪問 php.exe的權限。 在 iis4下,你要告訴它php是一個腳本引擎。?

安裝後,就可以開始學PHP了。入門學習,可以看看《PHP網絡編程從入門到精通》《零基礎學PHP》。入門後,可以看看《PHP+MYSQL經典案例剖析》和《完全手冊:PHP網絡開發詳解》。在Linux開發,可以看看《LAMP網站開發黃金組合 LINUX+APACHE+MYSQL+PHP》。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章