我有一个perl脚本,可以对大量数据执行操作并构建表。我想从PHP调用这个脚本。我传递的表格数据包含字符串,引号和各种恶意,所以很简单
passthru('./path/to/pl $var1 $var2');
不会这样做。我在想JSON编码数据然后base64编码JSON并传递如下:
passthru('./path/to/pl "$base64edJSON"');
这是一种正确的方式还是有更好的方法? perl脚本必须通过return,stdout或其他方法将已完成的表返回给PHP脚本。
答案 0 :(得分:2)
您可以使用proc_open调用perl脚本。然后你可以通过stdin将输入提供给它,并从stdout获取输出/错误。 Perl脚本将作为管道运行。
这可以解决临时文件的任何混乱问题。
答案 1 :(得分:1)
在PHP端,open a bidirectional pipe到Perl进程并写入其管道。在Perl方面,请阅读STDIN。
要返回数据,请写入Perl中的STDOUT。在PHP中,从管道中读取。
您无需编码。
答案 2 :(得分:0)
我会将PHP中的内容序列化为文件,然后将其加载到Perl中。您可以使用CPAN模块PHP::Serialization。