Вопрос по writable, php, permissions, file-permissions, chmod – php chmod () не меняет разрешения

6

У меня проблемы со скриптом загрузки изображений.

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

$upload_dir = "images/postcards/";
chmod($upload_dir, 777);
if (is_writable($upload_dir)) {
    echo 'The file is writable';
} else {
    echo 'The file is not writable';
}

Это всегда возвращает, что файл "не для записи "

Я пробовал настройкуchmod в0777 а также-rwxrwxrwx, Но результат всегда был один и тот же. Есть идеи?

в случае десятичной777 это неверно. вы всегда должны использовать префикс0 проверьте здесьCHMOD. Madan Sapkota

Ваш Ответ

4   ответа
2

Во-первых, откройте PHP error_report, добавив две строки поверх вашего кода, посмотрите, есть ли ошибка в chmod:

ini_set('display_errors', true);
error_reporting(E_ALL);

Убедитесь, что ваш WebServer имеет разрешение на этот каталог, я думаю, что WebServer неу меня нет разрешения.

О, спасибо большое за сообщение об ошибке. Я бился головой о стену, пытаясь установить такие вещи, как Chrome Logger, чтобы получать отчеты об ошибках для php. user124384
0

У меня уже была такая же проблема, вы можете изменить файл »с разрешения этого кода:


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

0

У меня были похожие проблемы при использовании chmod, хотя файл принадлежал apache: apache (пользователь веб-сервера). В моем случае SELinux мешал, отключив это прояснило:

sudo setenforce 0

И chmod работает. Теперь разберемся, как сделать исключение SELinux для этого случая ... (и нене забудьте включить SELinux, конечно)

Улучшите свой ответ, чтобы сделать его более полным. Pra Jazz
Это лучший ответ для моего конкретного случая, поскольку у меня были правильные пользователь и группа, установленные для файла. Также на тему конфигураций сервера, я также обнаружил, что установка новогоumask для моего веб-сервера был лучший вариант:serverfault.com/a/384922/185510 RibeiroBreno
10

Каталог должен принадлежать пользователю, вызывающему скрипт (обычноwww-dataapache или жеhttpd если ты'запускает скрипт в настройках apache / * NIX). Пользователь можетне устанавливает 777 разрешений для каталоговгородок.

Смотрите примечание к chmod ()руководство:

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

Согласен с точкой.directory must be owned by the user Madan Sapkota

Похожие вопросы