2009-12-20 3 views
0
나는로 설정 내 디렉토리 구조는 다음 한

:이 방법 indexActiontestingActionIndexController와 동일한 내부 정의가 TestController :는 젠드 프레임 워크 컨트롤러 매핑

내 컨트롤러 디렉토리에서
Application Root 
|-application 
| |--configs 
| |--controllers 
| | |--helpers 
| | 
| |--layouts 
| | |--scripts 
| | 
| |--models 
| |--views 
|  |--scripts 
|  |--index 
|  |--test 
| 
|--data 
| |--session 
| 
|--public 
|--index.php 
|--.htaccess 

, 나는이 컨트롤러가 . 브라우저를 localhost/application으로 지정하면 localhost/test 또는 localhost/testing 또는 localhost/test으로 이동하거나 다른 유사 페이지가 표시 될 때 404 Not Found 오류가 발생합니다.

저는 젠드 프레임 워크 (1.9.6)를 사용하고 있으며 구문 오류와 관련하여 다양한 소스 PHP 파일에 문제가 없음을 확인했습니다.

왜 내가이 동작을 볼 수 있으며이를 해결하기 위해 무엇을 할 수 있습니까?

편집 :

나는 다른 개발자가 나에게 내 설정을 비교하는 전체 젠드 기반 응용 프로그램을 전송했다. 파일의 위치 또는 다양한 구성 파일의 내용과 관련하여 명백한 차이점이 없었습니다. 그러나 그의 사이트에서도 사이트의 색인 페이지에만 액세스 할 수 있지만 내부 컨트롤러는 액세스 할 수 없습니다. 그는 그 문제가 없습니다. 아파치 설정에 문제가있을 수 있습니까?

+0

브라우저에서'localhost'는 무엇을합니까? 'public' 디렉토리는 웹 루트입니까? 'index.php'를'application' 디렉토리에 두지 않는 한,'IndexController'가 아니라면 어떻게 될지 확신 할 수 없습니다. – mercator

+0

localhost/myapp를 입력하면 IndexController.indexAction()이로드되지만 다른 매핑 된 동작을 얻는 방법을 알 수 없습니다. – Elie

+0

업데이트 대답을 확인하십시오 – SMka

답변

3

체크하면 아파치 CONFIGS 같은 URL에서 작동하도록 TestController에서 indexAction이 있어야합니다. AllowOverride All 옵션

<Directory "/Applications/MAMP/htdocs"> # OR WHAT IS IN YOU CONF FILE 

    ... SKIP ... 
    # 
    # AllowOverride controls what directives may be placed in .htaccess files. 
    # It can be "All", "None", or any combination of the keywords: 
    # Options FileInfo AuthConfig Limit 
    # 
     AllowOverride All 

    ... SKIP ... 
    </Directory> 

:

도 확인 : 제대로

UPDATE 1 작동하지 않습니다 mod_rewrite.htaccess처럼 보인다. 그것 없이는 .htaccess 파일이 작동하지 않습니다.

+0

이 httpd 이외의 다른 위치에 있습니까? conf 파일? – Elie

+0

noup. httpd.conf에는 LoadModule rewrite_module modules/mod_rewrite.so와 같은 것이 있어야합니다. – SMka

0

브라우저의 파일 크기는 localhost/public이어야하며 파일 크기는 .htacess이고 파일 크기는 index.php이어야합니다. 시작된 응용 프로그램을 기초로 사용하는 경우 으로 404가 끝나게 된 모든 요청이 응용 프로그램을 시작하고 적절한 컨트롤러를로드하도록 .htaccess 구성을 설정해야합니다.

수정
또한 기능이 약간 잘못되었습니다 (제 생각에는). localhost/test으로 가면 구성에서 다른 기본 동작을 정의하지 않는 한 테스트 컨트롤러에서 색인 작업을 호출해야합니다. 당신이 테스트 컨트롤러에서 테스트라는 이름의 액션이있는 경우

그래서, 당신은 액세스하려는 :

로컬 호스트/공공/시험/검사/그것은 당신이 오류를 설정하면 도움이

컨트롤러를 사용하면 디버깅하기가 훨씬 쉬워집니다.

메시지 : 액션 "인덱스"존재하지 않고 __call에 갇혀되지 않았다()

나는 시도하고 조치를 액세스 할 때 예를 들어, 그것이 내가이 (개발 모드로 할 때) 얻을 존재하지 않습니다

스택 추적 :
...

요청 파라미터 :

어레이 '제어기'=> 문자열 '모드'(길이 = 3)
'액션'=> 문자열 '인덱스'(길이 = 5)
'모듈'=> 문자열 '기본'(길이 = 7) 당신은 공공/localhost를 지정해야

+0

하지만 내 IndexController.indexAction() 제대로 실행하려면 얻을 수 있습니다 ... 그 밖의 아무것도 ... – Elie

1
  1. 은/응용 프로그램을 로컬 호스트 없습니다.
  2. ZF는 기본 컨트롤러 및 작업 이름으로 "색인"을 사용했습니다. 따라서 localhost/public을 시도하면 localhost/public/index/index이라는 결과가 indexController.indexAction에 있습니다. localhost/test을 가리키면 localhost/test/indexlocalhost/testing이 표시되어 localhost/testing/index이됩니다.

따라서 localhost/test/testing을 시도해야합니다.

0

localhost/test

+0

내가 할 - 두 컨트롤러 indexAction 및 testAction 정의되어 – Elie