PHP:put_file_内容不工作

PHP:put_file_内容不工作,php,pdf,birt,Php,Pdf,Birt,我有一个php脚本,可以将eclipse birt报告中的pdf保存为pdf。 我使用get文件内容作为输入。 创建birt报告pdf需要一些时间 我认为这就是问题所在 在下面的脚本中: <?php $rname = 'reportname'; $wname = $rname . '_' . date('d.m.Y') . '.pdf'; $pdf = file_get_contents("http://xxx.xxx.xxx.x:8080/Birt/run?__report=" . $r

我有一个php脚本,可以将eclipse birt报告中的pdf保存为pdf。 我使用get文件内容作为输入。 创建birt报告pdf需要一些时间

我认为这就是问题所在

在下面的脚本中:

<?php
$rname = 'reportname';
$wname = $rname . '_' . date('d.m.Y') . '.pdf';
$pdf = file_get_contents("http://xxx.xxx.xxx.x:8080/Birt/run?__report=" . $rname . ".rptdesign&sample=my+parameter&__format=pdf");
file_put_contents('/tmp/report' . $wname, $pdf);
?>
有什么问题

感谢您的帮助:

如果写入成功,file\u put\u contents将返回表示写入字节的数值,如果写入不成功,则返回false。如果写入未成功,则web服务器可能没有写入目录的权限。确保目录是可写的

$result = file_put_contents('/tmp/report' . $wname, $pdf);

if( is_numeric($result) && $result > 0 ) {
    // write was successful
} else {
    // write was NOT successful
}

相关PHP文档:

尝试为文件内容设置请求超时

file_get_contents('http://www.example.com/', false, stream_context_create(Array("http" => Array("method"  => "GET", 
    "timeout" => 600, 
    ))));
还要检查默认超时

echo ini_get("default_socket_timeout");

完成了任何基本调试,比如检查$pdf是否确实包含pdf数据?是否检查了文件\u获取\u内容的返回值?你的代码中没有一个考虑到现实世界:事情失败了,你只是假设什么都不会发生。问题是,什么都没有改变。。。pdf工作了大约两周。PHP中HTTP调用的默认超时为60秒。如果生成pdf所花的时间超过这个时间,那么文件内容最终将没有数据。如果它变得更快,那么它就会突然开始成功。在任何情况下,请参阅@Daniel Lichtenberg的答案,了解如何覆盖该超时。权限是正确的,但我认为,php获取文件内容时有一个超时。。。生成报告大约需要10分钟