2011-09-09 1 views
0

exec()을 호출하는 PHP 스크립트가 있습니다. 나는 하루 종일 동일한 스크립트를 호출하는 일부 코드 (exec()는 127 오류 코드를 반환)로 문제를 겪고 있습니다.PHP exec는 스크립트를 직접 호출 할 때 작동하지만 jQuery 아약스가 아닌 경우

드디어 작동하지 않는 코드가 내 웹 페이지에 jQuery를에서 호출되는 코드입니다 것을 일한

: 나는 주소 표시 줄에 download_forms.php의 URL을 입력하면,

$('#next_button').click(function(event) { 
    $.get('download_forms.php', function(data) { 
     alert(data); 
    }); 
}); 

그러나 내 브라우저에서 exec()가 제대로 실행됩니다. jQuery에서 exec()를 호출하여 다른 스크립트를 실행하려고 시도했지만 모두 실패하지만 주소 표시 줄에 입력하면 작동합니다.

이것이 왜 문제가되는지 알 수 없습니다. Firefox의 주소 표시 줄에 URL을 입력하든 내 웹 페이지의 버튼을 누르 든 HTTP 요청이 생성됩니다.

차이점이 무엇인지 알 수 있습니까?

참고 : exec()에서 다른 명령을 시도했지만 스크립트 주소가 주소 표시 줄에 직접 입력 된 경우 모두 jQuery (모든 PHP 코드가 정상적으로 실행 됨)에서 모두 실패하지만 작동합니다.

많은 감사

업데이트

이 내 download_forms.php 코드입니다. 초기 exec()는 exec()가 전혀 작동하는지 확인하는 것이 었습니다. 위와 같이 주소 표시 줄에 직접 입력 한 경우에만 올바르게 실행됩니다.

include ('inc/session.inc.php'); 
require_once('Downloader.php'); 
exec('id', $output, $r); 
echo var_dump($output); 
echo($r); 
try { 
    $downloader = new Downloader(); 
    $saveMessages = $downloader->saveToDatabase(); 
    // exec() in the combineAndDownloadForms() method 
    $downloadMessages = $downloader->combineAndDownloadForms(); 
} catch(Exception $e) { 
    echo $e->getMessage(); 
} 

또한 업데이트 나는 download_forms.php 페이지 (즉 <a>) 내 웹 페이지에서를 통해 하이퍼 링크를 만들었지 만, 간부 인() 아직 실행되지 않습니다. 적어도 아약스와는 아무 상관이 없다는 걸 압니다.

+0

이것은 조금 애매 ... 당신이 불을 지르고를 설치하거나 어떤 자바 스크립트 오류를 ​​받고 있는지 확인하기 위해 개발자 도구의 일종을 사용하려고 수 있을까? 'download_forms.php'는 어떻게 생겼습니까? 아약스를 처음 접하셨습니까? –

+0

@ Derek - 답장을 보내 주셔서 감사합니다. 내 'download_forms.php' 파일을 포함하도록 내 게시물을 업데이트했습니다. 나는 아약스에 익숙하지 않아. 건배. – Joe

+0

AJAX의 URL이 정확한 위치에 있는지 확인하고 있습니까? download_forms.php의 상대 URL과 js 파일의 위치는 무엇입니까?또한 Firebug 또는 유사한 것을 사용하는 경우 AJAX 호출의 요청/응답을 볼 수 있어야합니다. 그러면이 문제에 대한 더 많은 통찰력을 얻을 수 있습니다. –

답변

0

가치가있는 부분에 대해이 문제를 해결했으며 위의 내용은 모두 빨간색 청어입니다.

내가 보안 https 프로토콜을 사용하여 한에 있던 페이지가, 그래서 download_forms.php 스크립트, 또한 https를 사용하여 액세스 된 사용되는 때 것으로 나타났습니다하지 않았다 그리고 exec()passthru() 기능이 실행되지 않을 것으로 보인다 이러한 상황에서 서버의 명령은 의미가 있습니다.

download_forms.php URL의 프로토콜을 일반 http으로 변경하여 스크립트가 변경되어 이제는 정상적으로 작동합니다.

HTH