2014-09-06 2 views
0

내가 php에서 파이썬 스크립트를 호출하는 것을 시도하고, 모든 같이 일반 php에서 완벽하게 작동합니다PHP laravel에서 python을 실행하는 방법은 무엇입니까?

$data = $_POST['text']; 
    $result=exec('python_file.py ' . escapeshellarg(json_encode($data))); 
    $resultData = json_decode($result, true); 

문제는, 나는 중 하나에 laravel에서 3.2.13 기능을 같은 회선을 사용하는 경우 내 번들 컨트롤러는 명령을 실행하지 않으며 오류도 발생하지 않습니다!

도움이 될까요?

이 내 laravel 기능이 같은 모습입니다 :

public function action_test(){ 
    $text="Test"; 
    $result=exec('python_file.py ' . escapeshellarg(json_encode($text))); 
    $resultData = json_decode($result, true); 
    dd($result); 

} 

당신은

+1

$ 결과가 출력의 마지막 행이 포함됩니다. 'exec ('python_file.py'. escapeshellarg (json_encode ($ text)), $ result);' –

+0

괜찮 았어, 이제 문제가 생겼어. 경로에서, 나는 다음과 같은 파일의 전체 경로를 호출 는 MyDrive : [링크] FileNotFoundError :'[errno를 2 \ XAMPP \ htdocs를 \ MyProject를 번들 \는 \ myBundle는 컨트롤러 \ python_file.py \ 는이 오류를 제공합니다 ] 그런 파일이나 디렉토리가 없습니다 : '. \\ config.xml'' – Amr

+0

당신은 solid 대신 exec 대신 shell_exec을 사용할 수 있습니까? 전체 문자열 출력을 얻었 으면 알려주십시오. –

답변

1
  1. 유 config 파일에서 디버그 모드를 활성화하고 오류 로그가 있는지 확인했는지 확인하시기 바랍니다 감사합니다.

  2. 파일 경로가 올바른지 확인하십시오. 및 파일 허가

3. PHP 문서에서 "명령을 실행하고 명령의 모든 데이터를 아무런 간섭없이 직접 전달해야하는 경우 passthru() 함수를 사용하십시오."

희망이 있으시면 아래에 의견을 남겨 주시면보다 해결할 수 있도록 노력하겠습니다.

감사

0

문제는 이제 해결 : 솔루션 :

configFileDatasetBuilder = ".\\Configurations\\Config.xml" 

을하지만 난 이해, 내가 전화 해요 : 을 내 파이썬 코드에서, 비교적 같은 다른 파일을 호출하려고했다 요청 경로가 파일 경로와 다른 컨트롤러 함수의 모든 것이므로 경로가 손실됩니다. 지금에 관해서는 내가 좋아하는 파이썬 경로 하드 코딩 :

configFileDatasetBuilder =" MyDrive:\\xampp\\htdocs\\MyProject\\bundles\\myBundle\\controllers.\\Configurations\\Config.xml" 

를하고 일했다 :) 감사합니다 모두

관련 문제