PHP를 사용하여 내 컴퓨터에 로컬로 저장된 C 파일을 컴파일하고 실행하려고합니다. 다음 코드를 사용했습니다.
$dir = '/home/User/Desktop';
if ( !file_exists($dir) ) {
mkdir ($dir, 0744);
}
file_put_contents ($dir.'/test.c', $code);
$path = "/home/User/Desktop/test.c";
$Command = "gcc $path 2&>1";
exec($Command,$return_val,$error);
chmod 및 chgrp를 사용하여 파일에 대한 모든 권한을 설정했지만 실행하면 내 화면에 "성공"이 표시되지만 $ output 값은 표시되지 않습니다. 이것은 내가 입력 한 샘플 C 프로그램입니다.
#include <stdio.h>
int main()
{
printf("Hello world");
return 0;
}
하지만 다음 프로그램은 GCC를 사용하여 실행하면 정상적으로 실행됩니다. 현재 Ubuntu 14.04.2 LTS를 사용하고 있습니다.
나는 사용해 보았다
$Command = "gcc $path 2&>1"; $output = exec($Command); $output = exec(./a.out);
하지만 여전히 원하는 출력을 얻을 수 없습니다.
나는 사용하려고했다
$output = exec($Command,$return_val,$error);
이제 내가 $ error를 에코하면 "2"가 나옵니다.
나는 시스템을 사용해 보았다
$last_line = system('gcc $path', $retval);
echo '
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
다음 출력을 얻습니다.
Last line of the output:
Return value: 4
sh: 1: cannot create 1: Permission denied
gcc: error: 2: No such file or directory
하지만 나는 사용하여 파일에 대한 권한을 부여했습니다
sudo chmod g+w /home/User/Desktop/test.c
누구든지이 문제로 나를 도울 수 있습니까?
그것은 아니다 2&>1
, 그것은이다 2>&1
.
sh: 1: cannot create 1: Permission denied
gcc: error: 2: No such file or directory
여기서 볼 수있는 첫 번째 오류는 stdout을 리디렉션하기 위해 "1"이라는 파일을 만들 수 없다는 셸입니다.
두 번째 오류는 gcc가 "2"라는 입력 파일이 없다고 불평하는 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다