2012-07-18 81 views
0

我的腳本如下:怪異的ReadFile()問題

<?php 
header("Content-type:application/pdf"); 

// It will be called downloaded.pdf 
header("Content-Disposition:attachment;filename='test.pdf'"); 

// The PDF source is in original.pdf 
readfile("www.example.com/test.pdf"); 
?> 

現在,如果我改變的ReadFile說:

// The PDF source is in original.pdf 
readfile("test.pdf"); 

它工作正常,但是如果我指定的和絕對的URL,readfile("www.example.com/test.pdf");

PDF無法打開。以上只似乎在本地工作。

有誰知道爲什麼絕對網址不工作?乾杯

解決方案:

// The PDF source is in original.pdf 

readfile($_SERVER['DOCUMENT_ROOT']."/test.pdf"); 

此功能只適用於絕對路徑,而不是URL。

回答

1
  • 你缺少的協議:http://
  • ,並檢查您allow_url_fopen設置!
  • 打開錯誤報告

ini_set('display_errors', true); 
error_reporting(E_ALL); 

一個更聰明的方法是存儲/緩存本地遠程文件,所以你不必每次都下載它。並且它會將目標網站的負載卸下。

+0

ok allow_url_fopen已打開。順便說一句我使用https://不是http:// – thejoker 2012-07-18 12:51:58

+0

而且它仍然不起作用?你打開了錯誤報告嗎? – 2012-07-18 13:00:44

+0

讓我檢查,但是,它仍然沒有工作。 – thejoker 2012-07-18 13:08:10

0

如果已啓用fopen包裝,則可以使用該URL作爲具有此功能的文件名。

0

試試這個..,

<?php 
header("Content-type:application/pdf"); 

// It will be called downloaded.pdf 
header("Content-Disposition:attachment;filename='test.pdf'"); 

// The PDF source is in original.pdf 
readfile("http://www.example.com/test.pdf"); 
?> 

無 「HTTP://」 你不能下載。

+0

試過了,我最好使用cURL來調用文件? – thejoker 2012-07-18 12:42:53

+0

詳細說明:如果您遺漏了'http://',您的(thejoker's)PHP腳本將嘗試在本地計算機上的名爲'www.example.com'的目錄中查找該文件。它不知道它是一個URL,除非你告訴它。就像mishu在另一個答案中所說的那樣,只有在設置'allow_url_fopen'的情況下才能工作。 – RikkusRukkus 2012-07-18 12:44:34

+0

檢查文件權限,根本不需要cURL – Learner 2012-07-18 12:46:03