2012-07-05 18 views
3

나는 crunch라고 불리는 exe 파일로 컴파일 된 C 프로그램을 가지고있다.PHP에서 C 프로그램 실행

문자열을 취하여 해시 문자열을 반환합니다. 그것은 오랜 시간 동안 일해 왔지만 그저 작은 변화를 가져올 필요가있었습니다. 다음과 같이 터미널에서 완벽하게 작동합니다.

./crunch url-string/with-file.jpg 

멋진 해시 문자열을 출력합니다. 내 PHP에서는 같은 실행 :

$crunch = '~/domains/somewhere.net/html/api/crunch'; 
     $code = `$crunch $code`; 
     $code = mysql_real_escape_string(trim($code)); 

$ 코드는 처음에는 URL 문자열입니다. 해시를 반환했지만 더 이상은 반환하지 않습니다.

나는 C를 몇 번 다시 컴파일했다. 그냥 그것을 얻지 마세요, 나는 PHP를 exec(), passthru() 노력 해왔다.

는 고정 :

문제는 내 맥 유닉스 배포판과 리눅스 서버의 차이였다. 수정 프로그램은 내 서버에 로그인하여 .c 파일을 컴파일하는 것입니다.

당신의 삼촌 Bobs가 다시 작동합니다.

감사합니다. 나는 모든 사람의 조언을 확인했습니다. 때로는 가능한 휴식을 배제하는 것이이 문제에 집중하는 데 도움이됩니다. 가상 맥주 (또는 탄산수)가 주위에!

+1

귀하의 EXE 실행 function.popen.php에서

With safe mode enabled, the command string is escaped with escapeshellcmd(). Thus, echo y | echo x becomes echo y \| echo x. 

? 거의 항상 권한 문제입니다. – Brad

+0

실제 오류 무엇입니까? 아파치 사용자가 그것을 실행할 수 있는지 확인 했습니까? – Brian

+1

커맨드 라인이'../ crunch'가 아닌'../ crunch.exe'가 아니겠습니까? –

답변

1

한숨 ... 다른 비 자기 도움을 사용자 ... 권한에

http://php.net/manual/en/function.exec.php

를 적어 둡니다.

+2

OP는'exec()'을 시도했다고 말했습니다. – alex

+1

그러면 더 신중하게 읽어야합니다! – Brian

+0

권한은 MS 서버를 실행하는 것에 관해서 만 이야기하는 것처럼 보입니다. 리눅스 상자에 있습니다. 이상하게 작동했습니다. – elliotrock

1

A는 아마 불완전한 목록은 다음과 같습니다 exec(), system(), shell_exec(), backticks, popen(), proc_open(), passthru().

편집 :

확인이 경고 : PHP의 외부에서 호출하지만, PHP에서 실행되지 않습니다