AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 26309
In Process
aaa
aaa
Asked: 2009-06-16 18:19:17 +0800 CST2009-06-16 18:19:17 +0800 CST 2009-06-16 18:19:17 +0800 CST

为什么PHP脚本的工作许可在服务器之间有所不同?

  • 772
<?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 permissions php5
  • 2 2 个回答
  • 633 Views

2 个回答

  • Voted
  1. Jim OHalloran
    2009-06-16T19:05:22+08:002009-06-16T19:05:22+08:00

    为了执行您的 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 都会起作用,但是如果不知道哪些用户/组拥有这些脚本,就很难说清楚。

    • 1
  2. Ram Prasad
    2009-06-16T21:17:17+08:002009-06-16T21:17:17+08:00

    网络服务器期望文件必须具有网络服务器运行的用户的权限,才能打开和运行它。

    因此,如果网络服务器(比如 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 格式出现问题

    • 0

相关问题

  • 在 Vista 中提升 Windows 安装程序

  • 如何在 IIS 6 中免费重写 url (ala mod_rewrite)?

  • 如何授予对 Exchange 2007 中每个人的日历的访问权限?

  • mod_rewrite 不转发 GET 参数

  • 更改 PHP 的默认配置设置?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve