[英]How do I call a perl script from my Symfony2 controller?
我正在尝试从我的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或其他原因(例如脚本的位置,文件权限等)引起的。
对于可能出现问题的任何想法,我将不胜感激。
检查您的Web服务器和Symfony日志,以查看出现哪种错误。 Symfony日志位于项目的app / logs目录中(默认情况下)。 服务器日志的位置取决于您的配置。
请记住,您可以使用开发控制器(app_dev.php)查看有关该错误的更多详细信息(包括堆栈跟踪)。
要实际运行命令,请考虑使用Process组件 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.