2013-03-06 4 views
2

PHP에서 cmake 및 make 명령을 사용하여 생성 한 C++ 바이너리 파일을 실행하려고합니다. 터미널에서 같은 명령을 실행하려고하면 모든 것이 완벽하지만 PHP에서는 아무 것도 일어나지 않는 것 같습니다. 나는 그 safe_mode를 조사했다. chmod를 사용하여 모든 실행 권한을 부여했습니다. 같은 폴더, 다른 폴더에 물건을 넣으려고했습니다. 사실 내가 생각할 수있는 모든 가능한 솔루션을 시도했지만 여전히이 바이너리를 실행할 수 없습니다. 내가 왜 그렇게 할 수 없으 리라고 생각하니?PHP - C++ 바이너리 파일을 실행할 수 없습니까?

도움이 될 것입니다. 정말 감사하겠습니다.

미리 감사드립니다.

절차 내가 사용 : -

if($dir !== FALSE) { 
    $command = "./segmentation.sh $dir->dirname >> $dir->dirname/log"; 
    $output = $this->terminal($command); 
    echo $output['output']; 
} 

단자 기능

public function terminal($command) 
{ 
    if(function_exists('system')) 
    { 
     ob_start(); 
     system($command , $return_var); 
     $output = ob_get_contents(); 
     ob_end_clean(); 
    } 
    else if(function_exists('passthru')) 
    { 
     ob_start(); 
     passthru($command , $return_var); 
     $output = ob_get_contents(); 
     ob_end_clean(); 
    } 
    else if(function_exists('exec')) 
    { 
     exec($command , $output , $return_var); 
     $output = implode("n" , $output); 
    } 
    else if(function_exists('shell_exec')) 
    { 
     $output = shell_exec($command) ; 
    } 
    else 
    { 
     $output = 'Command execution not possible on this system'; 
     $return_var = 1; 
    } 
    return array('output' => $output , 'status' => $return_var); 
} 

그리고 내 쉘 스크립트 내가 시도

/path/to/folder/binary_file $args 

에코, LS, MKDIR 같은 이진 정상적인 통화가 있습니다 cmd를 내 셸 스크립트에서 그리고 그것은 단지이 바이너리가 실행되지 않습니다 완벽하게 작동합니다.

+0

는 –

+0

는 당신이 C++ 바이너리를 실행하려고 시도하는 방법에 대한 몇 가지 코드를 제공 할 수있는 사용자 권한 문제 내기? 또한 C++ 바이너리의 소유자는 누구입니까? 웹 서버를 실행중인 사용자와 동일해야합니다. – neutron

+0

@neutron 코드 조각을 게시했습니다. 보세요. – Varundroid

답변

0

작업 디렉토리가 생각과 다른 것 같습니다.

이을 시도해보십시오..

$path = realpath(dirname(__FILE__)); 

$cmd = $path . $command; 

을하고, C++ 파일이 실행중인 PHP 파일과 같은 디렉토리에있는 가정 (해당 명령을 실행하려고

0

을 그것은 그 문제의 원인

MAMP했다 당신이 나 같은 MAMP를 사용하는 경우

당신은 한 가지 더 수행해야합니다.

이동> 메뉴 - 쓰기> 텍스트 보에서 "/ 응용 프로그램/MAMP는/라이브러리/빈 /"폴더 -로 이동 = "/ 응용 프로그램/MAMP/라이브러리/lib 디렉토리 : $ DYLD_LIBRARY_PATH"

DYLD_LIBRARY_PATH 수출 DYLD_LIBRARY_PATH

을 - : X -> 보도 "envvars"라고

찾기 파일을 입력하고 #을 사용하여 다음 줄을 주석 이제는 모든 것이 잘 작동합니다.

Credit goes to this blog - Author Jonathon Hill

+0

여기에 해당 게시물의 내용을 다시 만들어야합니다. 물론 신용으로. –

+0

Ok :) 그것을 할 것입니다. – Varundroid

관련 문제