<?PHP
print "hello";
?>
我写了这段代码并保存为“1.php”;
然后我将此 PHP 脚本上传到我的服务器。
我有 8 个不同的免费托管服务器帐户。
我注意到有两种类型的服务器设置。
(1)
“A 型”
,例如 sqweebs。
我们需要将 PHP 文件权限设置为 640。
这意味着 sqweebs 服务器需要我们
授予组权限才能运行 PHP 脚本。
如果我设置 604,那么服务器会产生这样的错误。比如,
警告:未知: 无法打开流: 第 0 行的 Unknown 中的权限被拒绝 致命错误:未知: 需要打开失败 '/www/sqweebs.com/1.php' (include_path='.:/blahblah') 在第 0 行的未知中
(2)
另一方面,
这个世界上还有其他类型的服务器。
“B 型”,
例如 izfree。
在这台服务器上,我发现
如果我给它
604 作为权限,我可以使 PHP 脚本工作。
所以我想知道为什么会有很多服务器设置,
是什么原因,以及其他一些相关的
意见。
比如我应该使用哪个服务器,等等等等。
为了执行您的 PHP 脚本,Web 服务器需要能够读取该脚本。通常,出于安全原因,您的 Web 服务器(通常是 Apache)以非 root 用户身份运行。
因此,要解决您的问题,我们首先需要确定您的 Web 服务器以哪个用户身份运行。这与一个 Linux 发行版不同,但如果您打开 httpd.conf(或 Debian 上的 apache2.conf 文件)并查找以“用户”开头的行,您将看到用户名。在 Debian 上,您会看到“用户 www-data”,或者在 RH 派生的发行版上,它通常是“用户 apache”。
现在您需要构建您的权限,以便该用户对您的 php 脚本具有“读取”权限。
最简单的方法是将权限设置为 644,这将确保用户 Web 服务器可以通过“世界”权限进行访问。
另一种选择是将脚本的所有者更改为您的 www-data 或 apache 用户(如上所述),并将权限设置为 400。这会使除 Web 服务器之外的所有用户都无法访问该脚本。
如果您需要提供 FTP 访问,最后一个特别有用的选项是将组所有者更改为 www-data 或 apache,并将权限设置为 640。这使用户所有者对脚本和 Apache 具有完全读写权限它需要读取访问权限,同时将其他所有人锁定在外。
在上面的示例中,如果 apache 用户对脚本具有组所有权,则使用 604 将阻止 PHP 打开 sqweebs 服务器上的文件。同样,如果 Apache 用户没有文件的用户或组所有权,您的 izfree 服务器上的 640 也会失败。我猜在这两种情况下 644 都会起作用,但是如果不知道哪些用户/组拥有这些脚本,就很难说清楚。
网络服务器期望文件必须具有网络服务器运行的用户的权限,才能打开和运行它。
因此,如果网络服务器(比如 Apache)作为 www 运行,那么 www 应该具有对该文件的读取权限。(有些将 apache 作为 www 运行,有些作为 apache 运行,或者没有人运行)。
上传文件时,根据umask的设置方式,文件权限是这样设置的。(因此,在一台主机上,当未明确设置权限时,该文件可能具有 655 或其他可能是 600 的权限)。
如果您对通常在其上部署应用程序的操作系统有所了解,这总是有帮助的。大多数情况下,PHP 部署在 *nix 系统上,并且权限方案在所有 *nix 系统中几乎(几乎总是)相同。
尝试获取“Unix 系统管理手册”(Evi Nemeth & Co 撰写)。读起来很有趣,也很容易理解(它是一个旧版本..但unix权限没有改变)
另外,请确保您的服务器可以处理 DOS 行尾设置(您是在 Windows 上开发代码吗?)。确保在保存时将其保存为“Unix 格式”EOL(行尾)。(像 Dreamweaver 这样的大多数编辑器都提供了该功能)。大多数托管 (PHP) 提供商都运行某种形式的 *nix(freeBSD、Linux 等),并且这些服务器上的网络服务器会导致 Windows EOL 格式出现问题