오늘 오후에 저는 친구들과 함께 Laravel 프로젝트를 개발할 예정입니다. 이 프로젝트는 제 파트너가 부분적으로 개발한 것이므로 제 파일에 복사본을 복제했습니다. 컴퓨터를 설정했는데 URL을 열면 "입력 파일이 지정되지 않았습니다."라는 메시지가 나타납니다. 404 오류
우선 프로젝트 소스 코드에 문제가 있는 것으로 의심했습니다. , 그리고 나서 파일 끝에 항목 파일을 직접 입력했습니다. 이전에 웹사이트를 방문할 때에도 다음 문장을 추가했습니다.
<?php exit(1);
내 프로젝트의 소스 코드에 문제가 없다고 설명하고 코드 문제를 배제합니다.
내 환경에 문제가 있다는 의심이 들기 시작해서 장난을 치기 시작했습니다. 프로젝트를 삭제하고 새 프로젝트를 시작했지만 여전히 작동하지 않습니다. 나는 이것이 이 프로젝트의 유일한 문제라는 것을 알았습니다. 그래서 환경 문제가 아니라고 확신합니다.
환경 문제가 아니라는 뜻입니다. 환경 문제를 배제하세요
바이두에서 검색해 봤는데 Homestead.yaml 문제일지도 모른다는 분들도 계시던데 꼼꼼히 확인해 보니 문제가 없네요. . 그래서 구글링을 해보니 마땅한 이유를 찾을 수 없었습니다.
가상머신 구성 문제 해결
그래서 환경 문제도 아니고 프로그램 문제도 아닌 줄 알았더니 드디어 가상머신 내부를 확인해 봐야겠다는 생각이 들어서 결국 ngnix를 살펴봤습니다. 이 오류에 기록하십시오.
2019/05/23 12:31:44 [error] 5085#5085: *1 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(/home/vagrant/Code/haopai-git/public/index.php) is not within the allowed path(s): (/www/wwwroot/dev.guooo.top/:/tmp/:/proc/) in Unknown on line 0 PHP message: PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0 Unable to open primary script: /home/vagrant/Code/haopai-git/public/index.php (Operation not permitted)" while reading response header from upstream, client: 192.168.10.1, server: hp.hopa.cc, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.2-fpm.sock:", host: "hp.hopa.cc"
저도 위 에러를 보고 인터넷에 접속해서 찾아보니 주로 ngnix에서 fastcgi_param을 설정하는 문제에 대한 이야기가 많았는데, 별 문제가 없어서 옳지 않다고 생각했습니다. 다른 프로젝트도 있었는데, 이 프로젝트만으로는 문제가 있었습니다. 무슨 이유에서인지 "/www/wwwroot/"라는 폴더가 내 컴퓨터에 존재하면 안 되는 폴더라는 것을 발견하고, 이 문자열을 검색하기 위해 프로젝트에 갔는데, 마침내 .user.ini 파일에서 발견하게 되었습니다. 나는 그것이 그의 문제라는 것을 깨닫고 이 파일의 구성을 삭제했습니다. 파일 내용은 다음과 같습니다.
open_basedir=***********
자, 문제가 해결되었습니다.
돌아보고 생각해보니 사실 처음부터 ngnix 로그를 볼 생각을 했어야 했는데. 예전에 .user.ini 파일을 접한 적이 있었는데, 당시에는 크로스 사이트 공격을 방지하기 위해 사용되었다는 것만 기억했습니다.
PHP 5.3.0부터 PHP는 디렉토리별로 .htaccess 스타일 INI 파일을 지원합니다. 이러한 파일은 CGI/FastCGI SAPI에 의해서만 처리됩니다. 이 기능으로 인해 PECL의 htscanner 확장이 더 이상 사용되지 않습니다. Apache를 사용하는 경우 .htaccess 파일을 사용해도 동일한 효과가 있습니다.
기본 php.ini 외에도 PHP는 실행된 PHP 파일이 있는 디렉터리부터 시작하여 웹 루트 디렉터리($_SERVER['DOCUMENT_ROOT']로 지정됨)까지 모든 디렉터리의 INI 파일을 검색합니다. ). 실행 중인 PHP 파일이 웹 루트 디렉터리 외부에 있는 경우 해당 디렉터리만 검사됩니다.
PHP_INI_PERDIR 및 PHP_INI_USER 모드의 INI 설정만 .user.ini 스타일 INI 파일에서 인식됩니다.
더 많은 Laravel 관련 기술 기사를 보려면 Laravel Tutorial 칼럼을 방문하여 알아보세요!
위 내용은 고통스러운 문제 해결 "입력 파일이 지정되지 않았습니다."의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!