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コードの単純なものなのか、Symfony構成ファイルで何らかの方法でperlを有効にする必要があるのか 、スクリプトの場所、ファイルのアクセス許可などのようなものなのかはわかりません.
私がどこで間違っていたのかについてのアイデアをいただければ幸いです。