2011-09-13 4 views
1

두 서버 간의 파일을 동기화하려면 Unison을 사용하고 있습니다. 내가 파일을 업로드 한 후 PHP를 호출하려고합니다.exec 오류 코드 2

나는 exec를 사용하고 있지만,

exec("/usr/bin/unison /var/www/html/files ssh://a2//var/www/html/files -batch -prefer newer -times -path uploads", $out, $r); 

$out 빈 배열 인 2의 에러 코드를 반환, 그리고 $r 2의 오류 코드는 무엇을 의미 하는가 2.입니까?

P. 명령 줄에서 php -a을 실행하고 해당 행을 복사하여 붙여 넣으면 작동했습니다. 또한 exec('whoami')이 작동하며 (명령 줄에서와 동일한 사용자로 로그인했습니다).

+2

난 당신이 실제 오류가있는 출력을 읽을 수 있는지 간부 대신 http://us3.php.net/manual/en/function.popen.php 사용 보려고 제안했다. – sberry

+0

@ sberry2A : 야! 고마워요! '치명적인 오류 : 유니슨 디렉토리 생성 오류 /.unison : 허가가 거부되었습니다 [mkdir (/. 유니슨)]'. 내가 고칠 수 있다고 생각해! –

답변

1

해결했습니다. popen (thanks @ sberry2A)을 사용하여 오류가 발생했습니다.

Fatal error: Error in creating unison directory /.unison: Permission denied [mkdir(/.unison)]

나는 명령을 실행하기 전에, chdir('/home/user');를 실행 한 다음 HOME 설정하지에 대한 오류를 보았다.

그래서 명령 전에 HOME=/home/user을 추가했습니다. 이제 작동하며, chdir 명령도 필요하지 않습니다!

exec("HOME=/home/user /usr/bin/unison /var/www/html/files ssh://a2//var/www/html/files -batch -prefer newer -times -path uploads", $out, $r);