FPDF错误:无法创建输出文件

时间:2018-07-12 02:46:04

标签: php

我正在使用PHP上传脚本来面对这个奇怪的问题。希望能得到某人的帮助。

以下是此问题的详细信息:

DOCUMENT_ROOT是“ / var / www / html”

PHP上传可以很好地工作到名为“ / var / www / html / uploads”的文件夹

在“ / var / www / html / folder”上有另一个目录,该目录托管着其他网页 相同的PHP upload.sh脚本无法将文件上传到“ / var / www / html / directory / folder”目录。

“ / var / www / html / directory / folder”和“ / var / www / html / uploads”的文件夹权限均已设置为0777 两个文件夹中使用相同的上传脚本。

在两个文件夹中的upload.php中都设置了以下值。

$uploads = $_SERVER['DOCUMENT_ROOT'] . "folder/uploads/files/"

我尝试按如下方法在$ uploads中设置绝对路径,但不起作用:

$upload_dir = "/var/www/html/files/"

上传失败,出现以下错误:

Message: fopen(var/www/html/folder/uploads/files/filename.pdf): failed to open stream: No such file or directory
FPDF error: Unable to create output file:(/var/www/html/folder/uploads/files/filename.pdf)

任何想法,为什么服务器不让“ / var / www / html / folder”中的upload.php写入“ / var / www / html / folder / uploads /”目录。

在任何日志文件中都找不到相关消息。

================================================ =============

这说明PHP无法在/ var / www / html / folder / uploads / files /中创建mkdir。

创建目录的代码段为:

  $uploadPath = "folder/uploads/files/";
  $dir = $_SERVER['DOCUMENT_ROOT'] . $uploadPath;

    if (!is_dir($dir)) @mkdir($dir, 0777);
    return $uploadPath;

您知道为什么上面的mkdir代码无法这样做吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

对于那些面临类似问题的人,添加了递归标志后,我的问题已解决。我的mkdir命令更改如下:

发件人:

if (!is_dir($dir)) @mkdir($dir, 0777);

收件人:

if (!is_dir($dir)) @mkdir($dir, 0777, true);

答案 1 :(得分:0)

在运行脚本时,请确保未在任何位置打开文件 /var/www/html/folder/uploads/files/filename.pdf 。如果它在其他地方打开,则TCPDF无法打开它。