作者i9100 (i9100)
看板PHP
标题Re: [请益] 执行PHP出现"伺服器错误",其可能的原因?
时间Wed Jul 24 14:16:06 2013
※ 引述《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
1F:→ i9100:我的意思是, php要看到500错误几乎很难,应该先看看php设定 07/24 14:38
2F:→ i9100:先确定php是否以cgi执行, 是否需要以cgi执行等等 07/24 14:38
3F:推 dudeboy:您的意思是不是指,检查php.ini中关於CGI的设定 07/24 15:02
4F:→ i9100:看来,你用 Busybox 内建的 httpd CGI模式应该是固定的 07/24 15:26
5F:→ i9100:那你应该用最後两行设定, shell介面执行一下看看是否有错 07/24 15:26
6F:→ i9100:前面推文有,如 # /usr/local/bin/php index.php看看是否有错 07/24 15:27
7F:→ i9100:前面你提到,你有另外装 lightphp server,也许你可以朝这方向 07/24 15:29
8F:→ i9100:毕竟你的php程式并不独特,另装其他httpd应该是可以执行的 07/24 15:29
9F:→ i9100:毕竟 CGI 的应用稍微麻烦一些.CGI活跃在1992~1998,现已少用 07/24 15:33
10F:→ i9100:和php.ini无关.你也提到,同样程式装在win下正常. 另外装一个 07/24 15:35
11F:→ i9100:你熟悉的httpd server会比较好,比较快 07/24 15:35
12F:推 dudeboy:所以问题可能是出在httpd server就对了... 07/24 15:39
14F:→ i9100:用 CGI, 07/24 15:54
15F:→ i9100:直觉上,一般php网页程式目录,放到cgi-bin目录 (非php cgi) 07/24 15:55
16F:→ i9100:至少要1.全加执行权限 chmod -R +x .../cgi-bin/ 07/24 15:56
17F:→ i9100:2. 每个php档案第一行加上 #!/usr/local/bin/php 07/24 15:56
18F:→ i9100:看了 Busybox後, 你的问题应该是第二点, 不能执行是正常的 07/24 15:57
19F:→ i9100:建议你另外安装server比较快. 07/24 15:58
20F:→ i9100:或者原则上,一般通用的php程式目录不应该放入/cgi-bin/目录 07/24 16:01
21F:推 dudeboy:可惜APACHE好像太肥了,不太能跑。谢谢您解答。 07/24 22:33
22F:推 a60301:你可以装 nginx 07/25 14:58