2012-12-31 2 views
0

PHP를 통해 XML 출력을 포함하는 Linux 서버에 파일을 만들려고합니다.Drupal 7 모듈 shell_exec 문제

나는 다음 코드 줄 사용하고 있습니다 :

print "CHECKING: " . shell_exec("echo {$output} > tested.xml"); 

은 $ 출력 변수가 아니라 형식의 XML을 포함하고 나는 동적으로 tested.xml를 작성하고 그것을 채우기 위해 노력하고를 ... 그러나 그것은 작동하지 않습니다 .

개정 :

난 그냥 다음과 같은 접근 시도 :

print "CHECKING: " . shell_exec("echo {$output} > /var/www/mysite/sites/all/modules/my_module/output/tested.xml"); 

난 후 출력 디렉토리에게 전체 777 권한을 준를하지만 내 XML 파일이 아직 생성되지 않습니다.

+1

['escapeshellarg ($ output)'] (http://us.php.net/escapeshellarg)를 사용하십시오. 왜 일반 PHP 함수를 통해 수행 할 수있는 무언가를 위해 쉘 exec을 사용하고 있습니까? – DCoder

답변

1

제공된 코드에 누락 된 유일한 것은 shell_exec 명령에 지정된 리디렉션의 절대 경로 지정입니다. 웹 서버가 실행중인 OS 사용자 (예 : 'apache')가 대상 디렉토리에 대한 쓰기 권한을 가지고 있다고 가정하면 IO 리디렉션에 지정된 파일에 출력이 기록됩니다.

예를 들어,/tmp를, 다음 코드를 사용하는 XML 파일의 출력을 쓰기 위해 : 개정 된

print "CHECKING: " . shell_exec("echo {$output} > /tmp/tested.xml"); 

:

을하기보다는 내 자신의 I의 답변을 제공 좋은 결과를 얻기 위해 다음과 같이 결정했습니다 .- 제안 된 코드는 다음과 같이 약간 수정 된 코드를 사용하여 전체 XML 태그로 작업했습니다.

print "CHECKING: " . shell_exec("echo '{$output}' > /tmp/tested.xml"); 

ps : 또한 파일을 만들 수있는 Apache 허용 디렉토리의 전체 경로가 절대적으로 필요하다는 점도 맞았습니다.

+0

답변 해 주셔서 감사합니다. 방금 시도했지만 시도하지 않았습니다. 위에 변경된 내용으로 위의 질문을 업데이트했습니다. – sisko

+0

"잘 구성된 XML"은 그 자체만으로도 '<' and '>'을 많이 포함하게됩니다. – DCoder

+0

당신이 옳습니다! 나는 $ output 대신에 'output'을 시도했고 testing.xml 문서가 만들어졌다. 하지만 지금, 어떻게 내 XML 출력이 작동하도록 < and > 태그 문제를 처리합니까? – sisko