프로덕션 서버에서 PHP 5.2.9를 사용하고 있으며 exec() 함수가 "비표준"으로 동작하는 것으로 보입니다.exec는 항상 -1 (또는 127)을 반환합니다.
을 실행하면 $output
은 현재 폴더의 파일 목록을 예상대로 포함하지만 $return_var
은 예상대로 0 대신 -1로 설정됩니다. 나는 $return_var
명령을 사용하여 명령이 성공적으로 완료되었는지 확인하고 테스트 한 다른 모든 서버에서 예상대로 작동합니다.
누구나 이런 상황에 빠졌습니까?
편집 :
이<?php
$command = "asd";
$t1 = time();
$output = Array();
$result = -5;
$r = exec($command, $output, $result);
$t2 = time();
echo "<pre>";
var_export(Array(
'command'=>$command,
'result'=>$result,
'output'=>implode("\n", $output),
'r'=>$r,
't2-t1'=>$t2-$t1,
));
echo "</pre>";
무엇이든 내가 $command
에 넣어 명령, $result
항상 심지어 존재하지 않는 명령에 대한 -1이 될 것입니다 ...이
'exec()'가'ls'에 인자를주지 않도록'$ command' 변수가 빈 문자열이라면? 종료 코드가 여전히 '-1'입니까? 그렇다면'ls'의 구현을'man ls'을 사용하여 현재 시스템에 체크인하여 종료 코드'-1'이 정의되어 있는지 확인 했습니까? 다른 명령 (아마'du -h index.html')과도 마찬가지입니까? – sleepynate
'exec ("")'를 호출 할 수없는 것 같습니다. 경고를 인쇄합니다. 다른 명령은 모두 동일하게 작동합니다. 'sleep 5'는 -1로 반환하고, lsmod는 -1 등을 반환합니다 ... – Quamis
제가 볼 수있는 유일한 것은이 [exec php 매뉴얼 페이지에 게시]입니다. (http://www.php.net/manual /en/function.exec.php#76687), 다른 서버에서 작동하고 있기 때문에 이것이 왜 그렇게 될지 명확하지 않습니다. – Troubadour