2016-09-14 1 views
0

상속 된 웹 사이트에서 모든 것을 php7로 전환했습니다. 이 스위치로 인해 많은 오류가 발생했습니다. 하나의 오류는 함수 simplexml_load_file()이 아무것도 반환하지 않는다는 것입니다. 우리 서버의 파일 경로 (즉, /dir/dir/dir/template.xml)로 설정된 변수를 전달합니다. 그러나이 함수가 호출되면 어떤 값도 반환하지 않으며, 우리가 원하는 객체도 아니고 0이 실패했음을 나타냅니다.재시작시 SimpleXML 모듈이 사라짐

나는 php에서 경험이 없으므로, 무엇이 잘못되었는지 알아내는 데 어려움을 겪고있다. 온라인 체커에서 template.xml 파일에 오류가 있는지 확인했지만 아무 것도 발견되지 않았습니다. 파일 경로가 맞는지 확인했지만 /dir/dir/dir/template.xml의 형식이 잘못된 것인지 궁금합니다. 내가 본이 문제의 모든 예는 로컬 파일이 아닌 URL을 처리합니다.

$xml = simplexml_load_file($TempleteXml) or die("Unable to load configuration data!"); 

그리고 난 이미 확인 다이를 할 그것을 분해 시도() 문제가되지 않습니다 :

코드의 정확한 라인입니다.

편집 :이 문제가 발생하는 코드에서 다른 장소를 발견했습니다. 동일한 유형의 파일이 정확히 동일한 방식으로 호출되는 또 다른 파일입니다.

편집 : 마침내 나는 어떤 일이 일어나고 있는지 알려주는 오류를 얻을 수있었습니다. 문제는 다음과 같습니다. "Uncaught Error : 정의되지 않은 함수 simplexml_load_file() ...을 호출합니다."그래서 NetBeans에서 정확히 어디에서 파일을 찾을 수 있는지 알 수 없습니다. 나는이 조사 라인을 다음으로 들여다 볼 것이다.

편집 : 그래서 이것은 일반적인 문제로 밝혀졌습니다. 어떤 이유로 php7.0 SimpleXML로 업데이트 할 때 (이 함수가있는 확장 기능)가 설치되어 있지 않습니다. 나는 그것을 여기에서 발견했다 : PHP 7 simpleXML 하지만 처음에는 "php -m"이 SimpleXML이 활성화 된 것으로 표시되어 있지만 apache2 SimpleXML을 다시 시작하면 사라진다는 것을 보여줍니다. 누구든지 다시 시작할 때 PHP 모듈이 사라질 이유를 알고 있습니까?

+0

PHP 7에서 서버의 절대 파일 경로와 함께 정확한 기능을 사용했는데 예상대로 작동하므로 문제가되지 않아야합니다. 스크립트가 파일을 찾을 수 있다면'is_file ($ TemplateXml)'로 확인 하시겠습니까? –

+0

그러면 1이 반환되므로 해당 파일을 찾을 수 있습니다. 좋은 시작입니다. – khm

+0

오류보고 및 표시 오류가 있습니까? 로그 파일에서 단서를 확인 했습니까? –

답변

0

그래서 알아 냈습니다! SimpleXML이 설치되지 않았으므로 simplexml_load_file()이로드되지 않습니다. 그것을 설치하려면 "apt-get install php7.0-xml"을해야했습니다. 나는 그것이 "php -m"을 수행함으로써 현재 설치되었는지를 확인했다. 계속 사라지는 이유는 apache2 서버를 올바르게 다시 시작하지 못했기 때문입니다. 그것은 "/etc/init.d/apache2 restart"와 "poweroff"를했을 때만 효과가있었습니다. 이렇게하면 VirtualBox 컴퓨터를 다시 시작했을 때 SimpleXML이 여전히 설치되어있는 것으로 표시됩니다.