2014-01-29 3 views
1

로컬로는 작동하지만 라이브 서버에는 작동하지 않는 사이트에서 PHP Vcard 기능을 사용하고 있습니다. 내가 가지고있는 사이트에 그런 ..PHP VCard 가져 오기/생성 안 함

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

등 : 로컬로 나는 기본적으로 연락처를 받고 다음과 같을 수는 서버, 즉 lewis_cains.vcf에있는 .vcf 파일로 쓰고 있어요 .vcf 파일에 대한 직접 링크이며 로컬로 작업 할 때 내 주소록에 완벽하게 링크/다운로드됩니다.

그러나 저는 이것을 라이브 서버에 밀어 넣었으며 위의 내용으로 일반 텍스트 파일을 출력했습니다. 좀 더 연구하면 나는 약간 일을 수정하는 PHP 헤더를 사용하여 처리 할 수있는이 방법을 만들었습니다 : 지금은 링크 I를 클릭하면 내가 그것을하지만 파일을 다운로드하려고하는 위치에있어

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

파일 경로가 올바른지 확인해 보셨습니까? 다음과 같이 입력하십시오 : if (readfile ($ vcard_file)) { echo 'exists'; } –

답변

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 : 프로덕션 서버의 파일이 로컬 설치와 동기화되지 않아이 문제가 간접적으로 발생합니다. 어쩌면 라이브 서버에 깨끗한 배포를 수행하면이 문제는 사라질 것입니다. 또한이 메소드가 호출되기 전에 응답에 모든 데이터가 기록됩니까? 어쩌면 디버그 관련 "에코 (echo)"가 라이브 서버로 들어올 수도 있습니다. 헤드셋은 응답에 * 쓰여지기 전에 설정되어야합니다. – Michael