최근 Apache, PHP-FPM 및 MariaDB를 사용하여 웹 서버 구성을 배포했습니다. 동료가 이미지 업로드 기능으로 laravel 4 앱을 배포 할 때까지 원활하게 실행되고있었습니다. laravel이 생성 또는 업로드 된 후 파일 또는 폴더를 chmod()해야하는 이유는 무엇입니까?
문제
는 업로드 이미지에 대한 스크립트가chmod()
및
umask()
이 (내 동료가이 기본 동작했다)를 사용하는 동안은,
system()
등의 기능과 함께 사용할 수 PHP의
chmod()
기능을 가지고 있었다.
나는 서버가 내가 이해하지 못하는 것은 777
결코 것을 알려주는 무해 알려줍니다 this site 같은 PHP WIH chmod
의 위험 논란, 그리고 this post이 있다는 것을 알고, 왜 chmod()
없이도 PHP 프로세스가 제대로 업로드 된 파일을 읽을 수있을 때 chmod()
해야합니까? chmod()
없이 폴더를 만들고 폴더를 삭제할 수도 있습니다. 이러한 파일과 폴더는 PHP 프로세스에 대한 올바른 권한으로 만들어집니다.
TL; DR
그래서 그게 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 자체가 시스템과 같은 것을 통해 업로드 된 스크립트를 실행할 수있는 능력을 가지지 않는 한 위험하지 않다는 것을 분명히합니다()'또는'exec()'를 호출합니다. – Devon