2012-07-28 5 views
0

Mac (Mountain Lion)에서 Apache2/PHP5 웹 서버를 실행하고 있습니다. Lion에서 Mountain Lion으로 업그레이드했을 때 dev/environment/configs를 잃어 버렸습니다. 모든 것을 설정하려고 할 때, 나는 어떻게 든 내 httpd 또는 php.ini 구성을 왜곡했다. (필자는 어쨌든 생각한다.) 내 브라우저를 내 localhost에 연결할 때 악명 높은 PHP 오류가 발생한다.치명적인 오류 : 다시 선언 할 수 없습니다 (PHP/Apache Setup)

치명적인 오류 : 재 선언 할 수 없습니다 (임의의 함수).

내가 가리키는 페이지와 관계없이, 나는 이것을 얻는다. 내 웹 서버 설정이 손실되기 전에는 이런 일이 발생하지 않았으므로 파일이 괜찮으며 모든 구문이 훌륭하다고 확신합니다 (전체 사이트는 일관되게 include_once 및 require_once도 사용합니다).

가상 호스트 설정 또는 작업 디렉토리 설정과 관련이 있다고 생각합니다. 여러 가지 시도를 해봤지만 지금까지는 기쁨이 없습니다.

유용 할 것입니다/모든 정보를 제공해 드릴 수있어서 기쁘게 생각합니다. 어떤 도움이나 제안이라도 대단히 감사하겠습니다.

+3

''파일. 그게 효과가 있니? – Ryan

답변

0

을 내 특정한 경우, 나쁜 가상 호스트 설정으로 일어났다. 일단 리디렉션 문제가 수정되면 문제가 해결되었습니다.

여기에 제공된 다른 답변 (및 의견)은 모두 매우 훌륭하지만 나중에 유사한 문제가있는 사용자가 코드를 디버깅 할 수 있도록 도와야합니다. 아주 드물게 내가 귀신 들린 것처럼이 문제에 부딪치게 될 것입니다. 큰 도움을 주신 Ross Smith II, metal_fan 및 Jeffrey에게 큰 감사를드립니다!

2

include_path은 다른 경로를 사용하여 동일한 PHP 파일을로드 할 가능성이 가장 높습니다. 이렇게하면 php가 동일한 파일이라고 말할 수 없으므로 두 번째로 파일을로드하므로 Cannot redeclare 오류가 발생합니다. 문제를 추적 할 수

한 가지 방법은 문제를 일으키는 행하기 전에 다음과 같은 권리를 추가하는 것입니다

echo "<pre>"; 
print_r(explode(PATH_SEPARATOR, get_include_path())); 
print_r(get_included_files()); 
1

Fatal error: Cannot redeclare (some random function)/class

항상 같은 이름을 가진 함수 또는 클래스가 이전에 정의 된 것을 의미 테이크 이 예를 살펴 : 여기

<?php 


function test(){ 
return 1; 
} 

function test(){ 
return 2; 
} 
//will produce fatal error like yours 


class A {} 
class A {} 
//Will say that it can't redeclare class A 

는 에서 시작해야 단서 당신이 적절하게 설정되어있는 경로를 포함 :, 있는지 확인입니다

몇 가지 단서를 얻기 위해 시도 :

<?php 

print_r (get_included_files()); 

?> 
+0

예, 그렇습니다. 문제는 프로젝트에있는 것이 아니라 아파치에 있습니다. 방금 오류에 대한 단서를 주셨습니다. 오류를 해결하기위한 답을 제공하지 않으 셨습니다. – Shoe

+0

하지만 'PHP : 치명적인 오류는 재 선언 할 수 없습니다 ...'라고 말합니다. 그럼 우리는 무엇을 가지고 있습니까?include_once()가 아닌 include_once() 2) get_included_files()는 파일이 포함되어야 하는지를 결정하는데 도움이 될 것입니다. – Yang

+0

저자 더 많은 정보를 제공해야합니다, 나는 그것에 동의합니다. 그러나이 오류에 대한 저자의 잘못이 아닙니다. 아마 2 번 포함되어 두 번 실행되는 아파치 클래스 일 겁니다. 그래서 당신이 줄 수있는 가장 좋은 제안은 서버를 새로 설치하고 아파치 파일 폴더를 지우는 것입니다. 'get_included_files()'를 실행하면 아파치가 아니라 그가 포함시킨 파일을 얻을 수 있습니다. – Shoe

0

다른 포럼에서이 문제를 해결했습니다. 필자의 경우, 문제는 다음과 같습니다. <?php include "file.inc" .... ?> 두 번 "file.inc"가 포함되어 있는데 문제가있었습니다. Juust가 "main"파일에 include를 유지하면 그게 전부입니다!

관련 문제