PHP 文件是否需要读取权限才能在 CLI 中执行?

PHP 文件是否需要读取权限才能在 CLI 中执行?

我有一个 php 文件 test.php

#!/bin/php

<?php
  echo "test";
?>

此文件归 root 所有,其权限如下

-rwxr-x--x 

因此“其他人”可以执行,但不能读取。

当以非 root 用户身份登录并尝试从命令行运行此文件时

php test.php 

出现以下错误

Could not open input file: test.php

如果给予 +r 权限它就可以工作。

我认为只需要执行权限。

PHP 文件是否需要“其他人”的读取权限才能在命令行中执行?

注意:使用 Ubuntu 10.04 LTS 和 PHP 5.3.2

答案1

如果是二进制文件,则仅具有执行权限即可。脚本必须具有读取权限,以便其解释器可以读取它们。

答案2

如果您直接使用完整路径或带有 shebang 行的 ./test.php 执行脚本,则该脚本需要可执行。如果您指定解释器(即 php),则解释器需要能够执行代码,因此在这种情况下它只需要能够读取代码即可。

答案3

是的,该文件需要可供您尝试运行它的用户读取。顺便提一下,如果您以 ( ) 的方式调用它,则无需设置可执行位php /path/to/script.php

答案4

是的,脚本(非二进制文件)需要 r+x 权限才能执行。

相关内容