У меня есть файл 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
Только разрешение на выполнение - это нормально, если это двоичный файл. Сценарии должны иметь разрешение на чтение, чтобы их интерпретатор мог их читать.
если вы выполняете сценарий напрямую, используя полный путь или ./test.php со строкой shebang, он должен быть исполняемым. Если вы укажете интерпретатор (например, php), это интерпретатор, который должен иметь возможность выполнять код, поэтому в этом случае ему нужно только читать код.
Да, файл должен быть доступен для чтения пользователю, с которым вы пытаетесь его запустить. Кстати, исполняемый бит не нужно устанавливать, если вы называете его так, как вы делаете (php /path/to/script.php
).
Да, скриптам (небинарным файлам) требуется разрешение r + x для выполнения.