首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回空数组的exec命令

返回空数组的exec命令
EN

Stack Overflow用户
提问于 2015-07-31 20:43:36
回答 2查看 3.8K关注 0票数 4

我已经在我的链接 VPS中安装了wkhtmltopdf库,当我使用诸如"wkhtmltopdf https://www.google.com google.pdf“这样的终端从服务器上运行它时,我在输出中得到如下消息:

加载页(1/6)计数页(2/6)

解析链接(4/6)

加载页眉和页脚(5/6)

印刷页(6/6)已完成

PDF被创建。

现在,当我在exec命令中使用PHP时,如下所示:

代码语言:javascript
复制
<?php
$output = shell_exec("/usr/local/bin/wkhtmltopdf https://www.google.com google.pdf");
var_dump($output);
?>

PDF文件已经创建,看起来一切正常,但我得到的值为$output变量的NULL。为什么exec命令不提供相同的输出?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-31 22:28:43

如果您不想看到一个echo结果,您可能应该使用output

代码语言:javascript
复制
$output = shell_exec("/usr/local/bin/wkhtmltopdf https://www.google.com google.pdf 2>&1");
echo($output);

由于输出格式看起来很糟糕,所以也可以清除:

代码语言:javascript
复制
$output = shell_exec("/usr/local/bin/wkhtmltopdf https://www.google.com google.pdf 2>&1");
$tidyit = preg_replace("/(.[^\[]*\s\d{1,2}%)\s(?<!100%)|([=>\[]*)/","",$output);
$result = preg_replace("/]/","<br>",$tidyit);
echo($result);

结果

代码语言:javascript
复制
Loading pages (1/6) 100%
Counting pages (2/6)
Object 1 of 1 Resolving links (4/6)
Object 1 of 1 Loading headers and footers (5/6)
Printing pages (6/6)
Preparing
Page 1 of 1 Done 
票数 3
EN

Stack Overflow用户

发布于 2015-07-31 20:48:20

shell_execexec的不同之处在于,shell_exec的返回值是输出,而exec只给出最后一行-如果要使用exec检索输出,则需要传入数组的第二个参数,您希望将结果存储在:

代码语言:javascript
复制
<?php
exec("/usr/local/bin/wkhtmltopdf https://www.google.com google.pdf",$output)
var_dump($output)
?>

您也可以使用backticks代替shell_exec

代码语言:javascript
复制
<?php
$output = `/usr/local/bin/wkhtmltopdf https://www.google.com google.pdf`;
var_dump($output);
?>

请参阅PHP执行操作符

PHP支持一个执行操作符: backticks ()。注意,这些不是单引号!PHP将尝试以shell命令的形式执行backticks的内容;输出将被返回(也就是说,它不会简单地转储到output;它可以分配给一个变量)。反勾符的使用与shell_exec()完全相同。

附加

您的代码是正确的,但是脚本可能是在wkhtmltopdf完成之前超时,这意味着它永远不会接收返回值。尝试这样做来扩展php的超时,并给它时间来完成它的wkhtmltopdf进程:

代码语言:javascript
复制
<?php
    set_time_limit(60); // 60 seconds should be long enough to create your pdf
    $output = `/usr/local/bin/wkhtmltopdf https://www.google.com google.pdf`;
    var_dump($output);
?>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31754874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档