2

以下のスクリプトを使用して、blobデータとして保存されているPDFファイルをZIPに追加したいと思います。

理解できない2つのエラーが発生します

警告:file_put_contents(ATPstatement201203.pdf)[function.file-put-contents]:ストリームを開くことができませんでした:アクセスが拒否されました

注意:ZipArchive :: addFile()[ziparchive.addfile]:ファイル名として空の文字列

何が間違っているのかわかりませんか?

$TP_Month  =''.$_POST["tp_year"].''.$_POST["tp_month"].'';
$TP_format =$TP_Month;

echo $_POST["ids"];

$zip = new ZipArchive;
$zip->open('file.zip', ZipArchive::CREATE);
foreach( explode( ',', $_POST["ids"]) as $Client_ID)
{
  $sql_qry="select *
            from   ca_client_statement
            where  client_id='".$Client_ID."' and trading_period_month like '".$TP_Month."'";
  $sql_err_no=sql_select($sql_qry,$sql_res,$sql_row_count,$sql_err,$sql_uerr);

  $row = mysql_fetch_assoc($sql_res);
  $file_content = $row['pdf_statement'];
  $file_name = ''.$Client_ID.'statement'.$TP_format.'.pdf';
  $file=file_put_contents($file_name, $file_content);
  $zip->addFile($file);
}
$zip->close();

header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=filename.zip');
header('Content-Length: ' . filesize($zipfilename));
readfile($zipname);
4

1 に答える 1

3

「アクセスが拒否されました」とは、ファイルを保存しようとしている場所に書き込むためのアクセス許可がWebサーバーにないことを意味します。コマンドラインから使用して書き込もうとしているディレクトリへのアクセス許可を変更する必要がありますchmod(Linuxを使用している場合)。

何が悪いのかを証明するものとして、あなたはそれを行うことができますがchmod 777 /path/to/your/save/location、許可を広く開いたままにしておくのは良い考えではないので、ダイヤルし直す必要があります644

file_get_contents()そして、(上記のエラーで)失敗したために「ファイル名としての空の文字列」を取得し、失敗するとfalseドキュメントによると)ブール値を返します。これは(明らかに)空の文字列ファイル名として解釈されます。

于 2012-06-28T14:02:32.293 に答える