我有一个 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 权限才能执行。