web-dev-qa-db-ja.com

FPDFを使用して事前に指定されたディレクトリにファイルを保存する

PDFファイルをユーザー指定のディレクトリに保存します。FPDFを使用しています。コードは次のとおりです。

<?php
//echo "<meta http-equiv=\"refresh\" content=\"0;url=http://www.train2invest.net/useradmin/atest_Khan.php\">";
require('fpdf.php');

//create a FPDF object
$pdf=new FPDF();

//set font for the entire document
$pdf->SetFont('times','',12);
$pdf->SetTextColor(50,60,100);

//set up a page
$pdf->AddPage('P');
$pdf->SetDisplayMode(real,'default');

//Set x and y position for the main text, reduce font size and write content
$pdf->SetXY (10,60);
$pdf->SetFontSize(12);
$pdf->Write(5,'Dear Ms.XYX');

 $filename="test.pdf";
//Output the document
$dir = "/G:/PDF/test.pdf/"; // full path like C:/xampp/htdocs/file/file/
$pdf->Output($dir.$filename,'F');
?>

"G:\PDF\"ファイル名に保存されません!!私は以下を試しました:

$filename="G:\PDF\test.pdf";
$pdf->Output($filename.'.pdf','F');


$filename="G:\\PDF\\test.pdf";
$pdf->Output($filename.'.pdf','F');

$filename="G:/PDF/test.pdf";
$pdf->Output($filename.'.pdf','F');


$filename="/G:/PDF/test.pdf/";
$pdf->Output($filename.'.pdf','F');

私が書き込もうとしているディレクトリに書き込み/読み取り権限があり、そこにあることを確認しました。それでも動かない!

誰か助けてください...

17
Sharmin

Fオプションを誤って使用しています。FはPDFをユーザーのマシンの特定のディレクトリではなくサーバーにローカルに保存するように設計されています。したがって、次のようなものを使用します。

$filename="/home/user/public_html/test.pdf";
$pdf->Output($filename,'F');

これは、Webサーバーのpublic_htmlディレクトリに保存されます

37
user2559331

私自身、これに苦労して、確認しなければならないことが3つあります。そのうちの2つは、このトピックの他の投稿で言及されています。

  1. コマンド:output( 'F'、 "xyz_file");
  2. サーバーの宛先ディレクトリーに対する許可は、エスカレートされていない特権(つまり、drwxrwxrwx)に対する書き込みを許可する必要があります
  3. コンテンツタイプの定義:header( "Content-type:application/pdf");
2
9finger

ここで構文を確認してください: http://www.fpdf.org/en/doc/output.htm これは:string Output([string dest [, string name [, boolean isUTF8]]])、だからあなたは書く必要があります:

$pdf->Output('F', $filename, true); // save into the folder of the script

または例:

$pdf->Output('F', '/var/www/html/wp-content/' . $filename, true); // save into some other location

または相対パス:

$pdf->Output('F', '../../' . $filename, true); // to parent/parent folder

ただし、Windowsの絶対パスを使用できるかどうかはわかりません...

2
David Najman

これは、ファイルを保存したくない場所に保存しようとしているためです。ほとんどの場合、あなたのディレクトリがディレクトリのアクセス許可を777に設定していないことが原因です。

PHPスクリプトがWebページ(Apacheによって提供される)から実行される)の場合、このコードはApache(www-dataと呼ばれることもある)ユーザーによって実行されます。

したがって、Apacheユーザーは、書き込み先のディレクトリに書き込める必要があります。

通常、コマンドラインから次のようなものを使用して、システムの他のユーザーに書き込み権限を与える必要がある場合があります。

chmod o + w your_directory

ソースファイルをアップロードするために使用しているソフトウェアは、GUIを使用してアップロードする場合、2つのチェックボックスでそれを実行できるはずです。「その他」のユーザーの「書き込み」チェックボックスをオンにする必要があります。

1

ファイルのアップロードを試しましたか?あなたと私は同じことをやろうとしているのかもしれませんが、これはうまくいくようです。共有ドライブにも取り組んでいます。

http://php.net/manual/en/features.file-upload.post-method.php

0
J Noel

Apacheサービスの権限の可能性:

http://www.php.net/manual/en/function.opendir.php#87479

0
Paul Norman

私はこのように解決しました:

public functon GeneratePdf(){
    ...
    PDF::Output("C:/xampp/htdocs/MyProject/doc.pdf","F"); 
}

すべてのディレクトリパスを出力メソッドにコピーしましたが、これに対する追加のアクセス許可を設定していません。

お役に立てば幸いです。