如何从Symfony2控制器调用perl脚本?

时间:2012-11-08 11:00:35

标签: php perl symfony controller

我正在尝试从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);

...

这给了我&#34;网络错误:500内部服务器错误 - http://www2-mywebsite.org/myEntity/create&#34;

我不确定错误是由我的php代码中的简单内容引起的,需要以某种方式在Symfony配置文件中启用perl,或者其他类似脚本位置,文件权限等。

我很欣赏任何可能出错的地方。

1 个答案:

答案 0 :(得分:1)

检查您的网络服务器和Symfony日志,看看您遇到了什么样的错误。 Symfony日志位于项目的app / logs目录中(默认情况下)。服务器日志位置取决于您的配置。

请记住,您可以使用开发控制器(app_dev.php)查看有关错误的更多详细信息(包括堆栈跟踪)。

要实际运行您的命令,请考虑使用Process component