Symfony2 응용 프로그램 내에서 정보 관리 시스템에 대한 자동 제출을 구현하려고합니다. 다른 누군가가 제출을 위해 펄 스크립트를 작성했습니다. 컨트롤러를 사용하여 엔티티에서 값을 가져 와서 스크립트로 전달해야합니다.Symfony2 컨트롤러에서 perl 스크립트를 호출하려면 어떻게해야합니까?
나는 명령 줄에서 간단한 PHP 스크립트를 실행하여 펄 스크립트를 테스트 한 :
<?php
$perlscript = 'test_submit_to_lims.pl';
$output = \shell_exec('perl ' . $perlscript . " 'arg1' 'arg2' 'arg3' ");
echo $output;
?>
이 내가 내 응용 프로그램에 필요한 관심의 일부 값을 가진 문자열을 반환합니다.
내가 내 컨트롤러에서 유사한 코드를 사용하려고내 심포니 프로젝트 폴더와 같은 수준에있는 폴더에서 호출 종속성을 펄 스크립트와 종속 파일을 넣어 가지고
:
...
$arg1 = $form->get('arg1')->getData();
$arg2 = $form->get('arg2')->getData();
$arg3 = $form->get('arg3')->getData();
$pathToScript = '/opt/sfprojects/dependencies';
$perlScript = "$pathToScript/test_submit_to_lims.pl";
$output = \shell_exec('perl '.$perlScript." $arg1 $arg2 $arg3 ");
var_dump($output);
...
이주는 나 "네트워크 오류 : 내부 서버 오류 - http://www2-mywebsite.org/myEntity/create
오류가 내 PHP 코드에서 간단하게 발생했는지, Symfony 구성 파일 또는 일부 el에서 펄을 어떻게 든 활성화 할 필요가 있는지 여부는 확실하지 않습니다. 스크립트의 위치, 파일 사용 권한 등과 같은 것입니다.
내가 잘못 생각한 부분이 있으면 감사하게 생각합니다.
귀하의 500이 Perl에서 온다고 생각하지 않습니다. 시스템 호출을했기 때문에 왜 HTTP 상태 코드를 제공해야합니까? HTTP 헤더를 먼저 보내지 않고도 데이터를 클라이언트로 다시 보내고 싶지 않을 수 있습니다. – simbabque
죄송합니다. 더 명시 적이어야합니다. 펄 코드에서 오류가 발생하지 않습니다. 짧은 PHP 스크립트를 실행하면 정상적으로 작동합니다. 오류의 원인은 컨트롤러 클래스에 있으므로 스크립트를 실행하는 방법에 문제가 있어야합니다. –
앱이 실패한 데에는 많은 이유가있을 수 있습니다. app_dev.php 프론트 컨트롤러를 통해 앱을 실행하거나 로그를보고 무엇이 잘못되었는지 알아보십시오. – Cyprian