2014-01-29 38 views
1

我工作的一個PHP維卡設施在當地罰款但不工作的現場服務器上的站點。 本地我基本上得到聯繫方式,並將其寫入到一個.vcf文件服務器即lewis_cains.vcf這可能是這樣的:PHP電子名片不匯入/生成

BEGIN:VCARD 
VERSION:2.1 
N:name;Full 
FN:Full name 
ORG:Company name 
TITLE:Job title 
END:VCARD 

等。

那麼該網站我有直接鏈接到.vcf文件,並且在本地工作時,這完全鏈接/下載到我的地址簿中。

不過,我這推到一個活的服務器,並已輸出上述內容的純文本文件。 在一些更多的研究,我修改的事情略有並取得了該方法使用PHP頭處理:

public static function load_vcard($team_slug){ 
    $vcard_file = BASE_URL.'vcards/'.$team_slug.'.vcf'; 
    header('Content-Type: text/vcard'); 
    header("Content-Disposition: attachment; filename=\"".$team_slug.".vcf\";"); 
    readfile($vcard_file); 
} 

現在,我在那裏嘗試下載該文件,但一個位置,當我點擊鏈接我我得到了'找不到可以找到的卡片'的信息。

沒有人有任何想法,爲什麼這會在本地和不住了,那麼爲什麼它似乎並沒有被正確讀取文件?

非常感謝您的幫助, 劉易斯。

+0

您是否嘗試過檢查文件路徑是否正確? 是這樣的:如果 (ReadFile的($ vcard_file)){ 回聲 '存在'; } –

回答

0

正在加載的vCard文件可能是導致問題的原因的方式。 vCard文件存在於服務器上,對嗎?但是,您似乎使用URL來加載文件,而不是文件系統路徑。使用文件系統路徑可能會解決問題:

public static function load_vcard($team_slug){ 
    $vcard_file = __DIR__.'/vcards/'.$team_slug.'.vcf'; 
    header('Content-Type: text/vcard'); 
    header("Content-Disposition: attachment; filename=\"".$team_slug.".vcf\";"); 
    readfile($vcard_file); 
} 
+0

嗨邁克爾,非常感謝您的幫助,我剛剛嘗試過。由於一些瘋狂的原因,這仍然不起作用。它可以找到好的文件,如果我使用file_get_contents()進行測試,它會顯示文件中的內容,但是當我嘗試下載vcard時,它會失敗!非常沮喪,真的不知道下一步該去哪裏。無論如何,再次感謝並請讓我知道你是否有其他想法。 – lcainswebdeveloper

+0

沒問題。 :D還有一些想法:生產服務器上的文件可能與本地安裝不同步,這是間接導致此問題的原因。也許如果你乾淨地部署到實時服務器,這個問題將會消失。另外,在調用此方法之前是否將任何數據寫入響應?也許調試相關的「回聲」蠕蟲進入現場服務器。在寫入響應之前,必須先設置標題*。 – Michael