2016-08-17 7 views
2

Symfony 3 프로젝트 (버전 3.1.3)를 호스팅하기 위해 일부 공유 호스팅 (OVH.com - PHP 5.6.21)을 구입했습니다.symfony 3 - app_dev.php에 액세스 할 수 없음

symfony의 config.php 파일을 서버에 업로드 할 때 사이트 속도를 향상시키기 위해 2 번의 추천 메시지 만 표시되지만 사이트 작동을 방해 할 수있는 것은 없습니다. 따라서 호스팅은이 프로젝트를 제대로 실행하는 데 충분합니다.

I는 서버에있는 모든 파일과 폴더를 보냈지 만 나는 app_dev.php 페이지에 도달 할 때,이 오류 메시지가 : 나는에 내 IP의 addresss를 추가 할 필요가 알고

You are not allowed to access this file. Check app_dev.php for more information. 

을 나는 문제가에서 올 수있는 곳을보고 다른 일을 시도

if (isset($_SERVER['HTTP_CLIENT_IP']) 
    || isset($_SERVER['HTTP_X_FORWARDED_FOR']) 
    || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', 'XXX.XXX.XXX.XXX', 'fe80::1', '::1']) || php_sapi_name() === 'cli-server') 
) { 
    header('HTTP/1.0 403 Forbidden'); 
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); 
} 

다음 app_dev.php 파일에서 허용 된 IP 배열은, 그래서 여기에 내가 (XXX.XXX.XXX.XXX 내 IP 주소 인) 무슨 짓을했는지 :

  • 는 => 나는 (여전히 MySQL의 관련 오류가있는 경우에도) 사이트에 도달 할 수 있습니다 (500)
  • 전체 조건 블록을 제거 조건 => 오류에서! (와 in_array) 부분을 제거

권한이 777 일이더라도 var/logs/dev.log 파일은 완전히 비어 있습니다.

문제가 어디에서 왔는지 알면 나 도움이 될 수있어서 기쁩니다.

미리 도움 주셔서 감사합니다.

PS : 나는 자극 환경 (app.php)에 도달 할 때, 나는 오류 (500)를 얻을 수 있지만, VAR/로그/prod.log 파일은 ... MySQL의 오류에 대한 행이 포함 그래서 난이 좋은 것 같다 . 당신은 문제가 적어도입니다 :) 또는 정확히 알고 코드를 읽기

+0

; if 조건의 각 부분을 덤프하여 무엇이 실패했는지 확인하거나 한 번에 하나의 조건을 시도하십시오. – Rooneyl

+0

감사. 문제는'$ _SERVER [ 'HTTP_X_FORWARDED_FOR']'조건에서 나온 것 같습니다. 나는 그것을 제거하는 경우 결과가 확실하지 않습니다. – Daaaaa

+0

@Gerry의 대답으로 PROD에서 여전히 500 개의 오류가 발생합니까? 위의 구성은 DEV 액세스 허용에 대해 올바른 것으로 보입니다. –

답변

7

, 그것은 두 가지 이유 중 하나가 될 수 있습니다

  • 요청은 역방향으로 설정 될 수 Client-IP 또는 X-Forwarded-For 헤더를 포함 프록시 (예 : 광택)를 웹 사이트 앞에 설치합니다.
  • 올바른 IP 주소를 구성하지 않았습니다.

실제 원인에 관계없이 프로덕션 서버에서 app_dev.php 프런트 컨트롤러를 열지 않는 것이 좋습니다. 개발은 로컬 머신에서 수행되어야합니다. 이 검사를 잘못하면 개발 환경이 우연히 외부 세계로 열릴 수 있습니다. 스타터 용

+1

프로덕션 환경에서 app_dev.php를 사용하면 안된다. Symfony 프로젝트를 시작하려고합니다. 모든 것이 내 로컬 컴퓨터에서 제대로 작동하므로 멀리 떨어진 컴퓨터에서도 동일하게 작동하고 싶습니다.문제는'$ _SERVER [ 'HTTP_X_FORWARDED_FOR']'조건에서 나온 것 같습니다. 나는 그것을 제거하는 경우 결과가 확실하지 않습니다. – Daaaaa

+1

프록시 (있는 경우)가있는 경우 REMOTE_ADDR은 일반적으로 자신의 공용 IP 주소가 아닌 프록시 서버의 IP 주소를 포함합니다. 왜 정확히 dev 환경을 프로덕션 환경에서 사용 하시겠습니까? – Gerry

+0

저는 프로덕션 환경의 모든 것이 로컬 시스템과 동일하다는 것을 알고 싶었습니다 : prod와 dev 환경 모두에서 작업했습니다. – Daaaaa