Chmod 666 и доступ запрещен по причине повреждения - PullRequest
1 голос
/ 18 октября 2011

Прежде всего, это не дубликат: Отказано в разрешении на getimagesize

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

@chmod($path."/".$filename, '0666');
getimagesize($path . "/" . $filename);

Но если я установил chmod, я получаю следующее сообщение об ошибке:

не удалось открыть поток: в [отказано в разрешении...]

В чем проблема?Все файлы и каталог имеют одну группу и владельца - www-data.

Ответы [ 3 ]

2 голосов
/ 18 октября 2011

Попробуйте поставить / до пути.Не уверен насчет php, но я знаю, что python не добавляет начальные / к определенным операциям пути, поэтому он может искать относительный путь вместо абсолютного:

@chmod("/". $path."/".$filename, '0666');
getimagesize("/". $path . "/" . $filename);
1 голос
/ 18 октября 2011

На самом деле, вам действительно нужно выполнить chmod, прежде чем getimagesize?

Если так, может быть, вы можете попробовать поставить umask перед chmod. как то так?

$old = umask(0); 
chmod($path,0777);
umask($old);
1 голос
/ 18 октября 2011

Прежде всего, chmod не удастся (разрешение будет отклонено; возможно, ошибка, которую вы получите от chmod?), Если www-data (если это пользователь вашего веб-сервера) не имеет права на запись вкаталог $path.Убедитесь, что www-data имеет разрешение на чтение для всех родительских каталогов $path и разрешение на запись для $path.

Также убедитесь, что вы используете абсолютпути, как в chmod, так и getimagesize.

...