为什么服务器上的PHP脚本工作不同?

问题描述:

<?PHP 

print "hello"; 

?> 

我写这段代码并保存为“1.php”;为什么服务器上的PHP脚本工作不同?

然后我将这个PHP脚本上传到我的 服务器。

我有8个不同的免费托管服务器的帐户。

我注意到有 服务器设置的2种类型。

(1)
“A类”
为exapmle,sqweebs。

我们需要将其设置为640
这意味着sqweebs服务器需要我们
给组权限的PHP脚本运行PHP文件的权限。

如果设置了604,则服务器生成这种 errors.like,

 
Warning: Unknown: 
failed to open stream: 
Permission denied in Unknown on line 0 

Fatal error: Unknown: 
Failed opening required 
'/www/sqweebs.com/1.php' 
(include_path='.:/blahblah') 
in Unknown on line 0 

(2)
在另一方面,也有这个世界上其他类型
服务器 。

“B型”,
例如,izfree。

在此服务器上,我发现
我可以让PHP脚本工作,如果我给它
604的权限。


所以我想知道为什么有很多服务器设置,
和的原因是什么,以及其他一些相关
意见。

像我应该使用哪个服务器,或者其他等等。

+0

我认为这个问题应该更好地回答在ServerFault.com – 2009-06-16 02:10:57

+0

http://serverfault.com/嘿,这和*是一样的吗?外观和感觉是一样的! – aaa 2009-06-16 02:16:03

+0

认为它是“姊妹网站” – 2009-06-16 02:21:25

它可能取决于权限和apache运行在哪个组/用户下。如果它运行的是你的权限,你可以使用600,如果Apache不在你所在的同一组中,你可能需要类似于604的东西。我要说的是,它取决于服务器配置和文件权限。这是一个疯狂的猜测,但如果你真的需要像604这样的东西,这可能是一个迹象表明有可能是错误的,其他用户可能能够看到你的主目录...

该问题可能与使用免费的主机。它们增加了服务器限制,并且很可能禁用/启用某些他们认为适合管理您的网站行为的限制。

网络服务器预计该文件必须具有运行该网络服务器的用户的权限才能打开并运行该文件。

因此,如果网络服务器(如Apache)运行为www,那么www应该具有读取文件的权限。 (一些运行Apache为www,一些运行它为apache,或者没有人)。

当您上传文件时,根据umask的设置方式,文件权限设置如此。 (所以,在一台主机上,当没有明确设置权限时,该文件可以具有权限655或其他可以是600)。

如果您对通常部署应用程序的操作系统有所了解,它总会有所帮助。大多数情况下,PHP部署在* nix系统上,许可方案在所有* nix系统中几乎(几乎总是)相同。

试着抓住“Unix系统管理手册”(Evi Nemeth & Co)。它很有趣,阅读和易于理解(这是一个旧版本..但unix权限并没有改变)