使用Codeigniter从PHP执行Perl脚本

3
我有一个关于PHP和Perl的问题,我需要在我的网站PHP with codeigniter中运行Perl脚本,但是脚本的执行并不明显。我来解释一下。
当我在控制台中执行Perl脚本时,它可以完美地生成一个CSV文件,但是当我从PHP中运行它时,它却没有生成文件,并且在执行过程中没有出现任何错误信息,因此我认为它根本没有运行。
脚本需要三个输入参数,在执行时会被连结起来。但即使我试图强制执行脚本,将值放置在执行命令中,仍然没有任何反应。
我已经尝试了以下几种方法来运行它:
$perl_script = './zc_csv_dist_crd_3.pl' . ' ' . $ctac_corre . ' ' . $codigo. ' ' . $num_dist;
exec($perl_script);

或者
system($perl_script);

或者直接。
shell_exec("./zc_csv_dist_crd_3.pl 7736 311745421 42906");
#or
exec("./zc_csv_dist_crd_3.pl 7736 311745421 42906");
#or
system("./zc_csv_dist_crd_3.pl 7736 311745421 42906");

我想澄清一下,我不需要返回值,即使是perl脚本也没有返回值,因为文件可以为空或包含数据,这两种情况都是有效的。我已经阅读过可能是权限问题的信息,但我对perl、php和linux都很陌生。我留下了linux服务器的特点,希望有人能指导我。
非常感谢您的帮助。
注:我已经耐心地阅读了stackoverflow论坛、PHP手册,尽管如此我仍然无法让它工作,我知道我可能漏掉了什么,但目前我还看不到。

CentOS Linux 7.3.1611 (Core) 名称="CentOS Linux" 版本="7 (Core)" ID="centos" ID_LIKE="rhel fedora" 版本号="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" 主页网址="https://www.centos.org/" 漏洞报告网址="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"CentOS Linux 7.3.1611 (Core) - Darwin Delgado
1
你有检查返回值吗?如果没有,你应该这样做,以便可以缩小问题范围。Perl脚本可能无法执行,或者它执行了但抛出了致命错误。 - Ron Bergin
1
你尝试过使用完整路径而不是相对路径吗? - Ron Bergin
Ron,我使用完整路径和Perl脚本,它运行良好,甚至在屏幕上显示执行命令,我将其复制并在服务器控制台上执行,而且没有任何问题或错误。 - Darwin Delgado
我不确定你是否意识到这一点,但返回值和返回代码并不相同。在脚本中,你进行了什么样的错误检查/处理? - Ron Bergin
显示剩余4条评论
1个回答

0

你可能正在安全模式下运行你的PHP代码,而在这种情况下,你将无法使用你提到的函数,请查看安全模式函数

我发现这些链接中有一些与你类似的问题: 问题1 问题2

希望能对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接