Re: [請益] 執行PHP出現"伺服器錯誤",其可能的原因?

看板PHP作者 (i9100)時間12年前 (2013/07/24 14:16), 編輯推噓4(4018)
留言22則, 3人參與, 最新討論串1/1
※ 引述《dudeboy (微瓦弟)》之銘言: : 各位前輩大家好,雖然題目有點籠統,大致上是這樣的。 : : 我在「網樂通」上面架站,安裝了php,mysql,httpd伺服器了。 : 資料庫可以用navicat premium連上,而丟一個簡單的php語法,網頁也可以呈現。 : 所以我覺得三個程式應該都是OK的。 : : 可是我想要執行phpmyadmin,joomla這些東西的時候,點入他們的index.php : 都沒有出現安裝導引頁,而出現「伺服器錯誤」,錯誤代碼:500 : : 嘗試把權限改成777也一樣,不知道跟php.ini有沒有關係... : 因為網樂通是linux系統,以前用win系統架sever都沒問題。 : 所以我也不太知道問題會出在哪。 : 故請前輩們幫忙想想。 : : : 都不是欸,是Busybox內建的http服務,見 http://ppt.cc/8IAM : 也試過lighttpd,但是都一樣開不起來。 : 有看過log,可是看不出個所以然,見 http://ppt.cc/AnA8 : 500, Internal Server Error. 通常(只會)發生在 CGI, 舉凡 CGI程式語法錯誤(直譯式語言),沒有傳回正確的http header, 無執行權限等。 基本上,http server 非設定 CGI 權限的目錄是不會發生這種錯誤 例如,我寫個 CGI 程式放到 /usr/local/www/cgi-bin/ 下面 1. http server 需增加 CGI 目錄設定 (略) 2. chmod +x /usr/local/www/cgi-bin/ ===> 沒做會有 500 錯誤 3. 假設我的程式語言是 perl , 名字叫做 printenv 檔案內容 #!/usr/local/bin/perl print "Content-type: text/plain; charset=iso-8859-1\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; } 假設 3-1. 檔案無執行權限 ===> 500 錯誤 3-2. 第一行路徑錯誤 ===> 500 錯誤 3-3. 少第三行 http header ===> 500錯誤 3-4. 語法錯誤 ===> 500 錯誤 遇到 500 錯誤的情況, 如果: CGI 是你需要的模式 那應該直接執行看看是否有誤,不透過網頁。如 $ cd /usr/local/www/cgi-bin (最好使用apache帳號) $ ./printenv 先這樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.40.61

07/24 14:38, , 1F
我的意思是, php要看到500錯誤幾乎很難,應該先看看php設定
07/24 14:38, 1F

07/24 14:38, , 2F
先確定php是否以cgi執行, 是否需要以cgi執行等等
07/24 14:38, 2F

07/24 15:02, , 3F
您的意思是不是指,檢查php.ini中關於CGI的設定
07/24 15:02, 3F

07/24 15:26, , 4F
看來,你用 Busybox 內建的 httpd CGI模式應該是固定的
07/24 15:26, 4F

07/24 15:26, , 5F
那你應該用最後兩行設定, shell介面執行一下看看是否有錯
07/24 15:26, 5F

07/24 15:27, , 6F
前面推文有,如 # /usr/local/bin/php index.php看看是否有錯
07/24 15:27, 6F

07/24 15:29, , 7F
前面你提到,你有另外裝 lightphp server,也許你可以朝這方向
07/24 15:29, 7F

07/24 15:29, , 8F
畢竟你的php程式並不獨特,另裝其他httpd應該是可以執行的
07/24 15:29, 8F

07/24 15:33, , 9F
畢竟 CGI 的應用稍微麻煩一些.CGI活躍在1992~1998,現已少用
07/24 15:33, 9F

07/24 15:35, , 10F
和php.ini無關.你也提到,同樣程式裝在win下正常. 另外裝一個
07/24 15:35, 10F

07/24 15:35, , 11F
你熟悉的httpd server會比較好,比較快
07/24 15:35, 11F

07/24 15:39, , 12F
所以問題可能是出在httpd server就對了...
07/24 15:39, 12F

07/24 15:54, , 13F
對,你用Busybox內建的httpd http://ppt.cc/8IAM 已經說是使
07/24 15:54, 13F

07/24 15:54, , 14F
用 CGI,
07/24 15:54, 14F

07/24 15:55, , 15F
直覺上,一般php網頁程式目錄,放到cgi-bin目錄 (非php cgi)
07/24 15:55, 15F

07/24 15:56, , 16F
至少要1.全加執行權限 chmod -R +x .../cgi-bin/
07/24 15:56, 16F

07/24 15:56, , 17F
2. 每個php檔案第一行加上 #!/usr/local/bin/php
07/24 15:56, 17F

07/24 15:57, , 18F
看了 Busybox後, 你的問題應該是第二點, 不能執行是正常的
07/24 15:57, 18F

07/24 15:58, , 19F
建議你另外安裝server比較快.
07/24 15:58, 19F

07/24 16:01, , 20F
或者原則上,一般通用的php程式目錄不應該放入/cgi-bin/目錄
07/24 16:01, 20F

07/24 22:33, , 21F
可惜APACHE好像太肥了,不太能跑。謝謝您解答。
07/24 22:33, 21F

07/25 14:58, , 22F
你可以裝 nginx
07/25 14:58, 22F
文章代碼(AID): #1Hxt4fSz (PHP)
文章代碼(AID): #1Hxt4fSz (PHP)