Назад | Перейти на главную страницу

Почему рабочее разрешение PHP скрипта различается на разных серверах?

<?PHP

print "hello";

?>

Я пишу этот код и сохраняю как «1.php»;

Затем я загружаю этот PHP-скрипт на свой сервер.

У меня 8 разных аккаунтов на бесплатном хостинг-сервере.

И заметил, что есть 2 типа настроек сервера.

(1)
"наберите "А"
например, sqweebs.

Нам нужно установить разрешение файла PHP как 640.
Это означает, что сервер sqweebs требует от нас
чтобы дать группе разрешение на запуск скрипта PHP.

Если я установил 604, то сервер сгенерирует такие ошибки. Например,

Warning: Unknown: 
failed to open stream:
 Permission denied in Unknown on line 0

Fatal error: Unknown: 
Failed opening required 
'/www/sqweebs.com/1.php' 
(include_path='.:/blahblah') 
in Unknown on line 0

(2)
С другой стороны, есть и другие типы
серверов в этом мире.

«Тип Б»,
например izfree.

На этом сервере я обнаружил, что
Я могу заставить PHP скрипт работать, если дам его
604 как разрешение.


Итак, я хочу знать, почему существует множество настроек сервера,
и в чем причина, и некоторые другие связанные
мнения.

например, какой сервер мне следует использовать, и т. д. и т. д.

Чтобы выполнить ваш PHP-скрипт, веб-сервер должен иметь возможность читать скрипт. Как правило, ваш веб-сервер (обычно Apache) запускается от имени пользователя без полномочий root по соображениям безопасности.

Итак, чтобы решить вашу проблему, нам сначала нужно выяснить, от имени какого пользователя работает ваш веб-сервер. Это отличается от одного дистрибутива Linux к другому, но если вы откроете свой httpd.conf (или файл apache2.conf в Debian) и найдите строку, начинающуюся с «User», вы увидите имя пользователя. В Debian вы увидите «www-данные пользователя», а в дистрибутивах, производных от RH, это обычно «User apache».

Теперь вам нужно создать свои разрешения так, чтобы этот пользователь имел доступ для чтения к вашим скриптам php.

Самый простой способ - установить разрешения на 644, что обеспечит доступ веб-сервера пользователя через разрешение «мир».

Другой вариант - изменить владельца вашего сценария на пользователя www-data или apache (как определено выше) и установить разрешения на 400. Это делает сценарий недоступным для всех пользователей, кроме веб-сервера.

Последний вариант, который особенно полезен, если вам нужно предоставить доступ к FTP, - это изменить владельца группы на www-data или apache и установить разрешения на 640. Это дает владельцу пользователя полный доступ для чтения и записи к сценарию, а Apache доступ для чтения, который ему нужен, при этом блокирует всех остальных.

В приведенных выше примерах использование 604 не позволит PHP открывать файлы на сервере sqweebs, если пользователь apache имеет групповое владение скриптом. Точно так же 640 на вашем сервере izfree выйдет из строя, если у пользователя Apache нет ни пользователя, ни группы, владеющего файлами. Я предполагаю, что в обоих случаях 644 будет работать, но трудно сказать, не зная, какие пользователи / группы владеют скриптами.

веб-сервер ожидает, что файл должен иметь разрешение для пользователя, от имени которого работает веб-сервер, для его открытия и запуска.

Итак, если веб-сервер (например, Apache) работает как www, то www должен иметь доступ для чтения к файлу. (некоторые запускают apache как www, а некоторые запускают его как apache, или никто).

Когда вы загружаете файл, в зависимости от того, как установлена ​​umask, разрешение файла устанавливается так. (так, на одном хосте файл может иметь разрешение 655, а другой - 600, если разрешение не установлено явно).

Всегда помогает, если вы немного знаете об ОС, в которой обычно развертываете свои приложения. В основном PHP развертывается в системе * nix, и схема разрешений почти (почти всегда) одинакова для всех систем * nix.

Попробуйте получить "Руководство по администрированию системы Unix" (от Evi Nemeth & Co). Его довольно интересно читать и легко понять (это старая версия .. но разрешения unix не изменились)

Также убедитесь, что ваш сервер может обрабатывать настройки конца строки DOS (вы разрабатываете код для Windows?). Убедитесь, что при сохранении вы сохранили его как "Unix format" EOL (конец строки). (большинство редакторов, таких как Dreamweaver, предоставляют эту функцию). Большинство провайдеров хостинга (PHP) используют некоторые формы * nix (freeBSD, Linux и т. Д.), И веб-серверы по этим причинам вызывают проблемы с форматом Windows EOL.