Недавно я развернул конфигурацию веб-сервера с Apache, PHP-FPM и MariaDB. он работал гладко, пока мой коллега не развернул приложение laravel 4 с возможностью загрузки изображений.Почему laravel нуждается в chmod() файле или папке после создания или загрузки?
Проблема была у меня есть chmod()
функция отключена в PHP вместе с system()
и т.д. функций, в то время как скрипт для загрузки изображений использует chmod()
и umask()
(мой коллега сказал, что это поведение по умолчанию).
Я знаю, что есть дебаты по поводу опасности chmod
Жека PHP как this site, который говорит он безвреден, и this post, что говорит о том, что сервер никогда не должен быть 777
, что я не понимаю, почему вам нужно до chmod()
что-то, когда PHP-процесс может нормально читать загруженный файл даже без chmod()
? он может даже создавать папки и удалять папки без chmod()
, так как файлы и папки создаются с правильным разрешением для процесса PHP.
Т.Л., д-р
так, что приносит на мой вопрос, верно ли, что загрузка файлов в Laravel 4 необходимости chmod()
функционировать должным образом? и почему?
редактировать
для тех, кто хотел бы знать код (этот код находится в vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/UploadedFile.php
):
$target = $this->getTargetFile($directory, $name);
if ([email protected]_uploaded_file($this->getPathname(), $target)) {
$error = error_get_last();
throw new FileException(sprintf('Could not move file "%s" to "%s" (%S)', $this->getPathname(), $target, strip_tags($error['message'])));
}
@chmod($target, 0666 & ~umask());
Можете ли вы показать код, чтобы мы знали, какую функцию в Laravel вы говорите конкретно. – Devon
@ Devon хорошо да, я сделаю редактирование прямо сейчас – am05mhz
Если вы прочитали сообщение, с которым вы связались, редактирование поясняет, что сам chmod не является опасным, если у них нет возможности выполнять загруженный скрипт через нечто вроде 'system() 'или' exec() '. – Devon