我正試圖在我的Symfony2應用程序中實現自動提交到信息管理系統。其他人已經寫了一個perl腳本提交。我只需要使用控制器從實體獲取值作爲參數傳遞給腳本。如何從我的Symfony2控制器調用perl腳本?
我已經在命令行中運行的短PHP腳本測試perl腳本:
<?php
$perlscript = 'test_submit_to_lims.pl';
$output = \shell_exec('perl ' . $perlscript . " 'arg1' 'arg2' 'arg3' ");
echo $output;
?>
這將返回與我需要爲我的應用程序的一些感興趣的值的字符串。
我已經把Perl腳本和相關文件的文件夾中叫做依賴在同一水平
我想在我的控制器使用類似的代碼我Symfony的項目文件夾:
...
$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);
...
這使我「網絡錯誤:500內部服務器錯誤 - http://www2-mywebsite.org/myEntity/create」
我不確定是否錯誤是由我的PHP代碼中的一些簡單的東西引起的,需要以某種方式啓用perl在Symfony配置文件或其他東西se像腳本的位置,文件權限等。
我希望我可能出錯的地方有任何想法。
我不認爲你的500來自Perl。既然你進行系統調用,爲什麼它會給你一個HTTP狀態碼呢?也許有些東西是失敗的,所以你沒有首先發送一個HTTP標頭而將數據發送回客戶端? – simbabque
對不起,應該更加明確,我知道錯誤不在Perl代碼中,因爲當我運行一個執行它的短php腳本時,它工作正常。錯誤的起源在我的控制器類中,所以我在這裏執行腳本的方式肯定有問題。 –
可能有很多原因導致您的應用失敗。嘗試通過app_dev.php前端控制器運行您的應用程序,或者查看日誌內部以找出錯誤。 – Cyprian