Нужно ли 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

4 ответа

Решение

Хорошо иметь только разрешение на выполнение, если это двоичный файл. Сценарии должны иметь разрешение на чтение, чтобы их интерпретатор мог их прочитать.

Если вы выполняете скрипт напрямую, используя полный путь или./test.php со строкой shebang, он должен быть исполняемым. Если вы указываете интерпретатор (т.е. php), то именно интерпретатор должен уметь выполнять код, поэтому в этом случае ему нужно только уметь читать код.

Да, файл должен быть доступен для чтения пользователю, с которым вы пытаетесь его запустить. Кстати, исполняемый бит не нужно устанавливать, если вы называете его так, как делаете (php /path/to/script.php).

Да, для выполнения сценариев (недвоичных файлов) требуется разрешение r+x.

Другие вопросы по тегам