我正在尝试从我的 Symfony2 应用程序中实现向信息管理系统的自动提交。其他人为提交编写了一个 perl 脚本。我只需要使用控制器从实体中获取值以作为参数传递给脚本。
我已经通过从命令行运行一个简短的 php 脚本来测试 perl 脚本:
<?php
$perlscript = 'test_submit_to_lims.pl';
$output = \shell_exec('perl ' . $perlscript . " 'arg1' 'arg2' 'arg3' ");
echo $output;
?>
这将返回一个字符串,其中包含我的应用程序需要的一些感兴趣的值。
我已将 perl 脚本和相关文件放在一个名为 dependencies 的文件夹中,与我的 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 或其他诸如脚本的位置、文件权限等。
我会很感激任何关于我可能出错的想法。