我正在使用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代码无法这样做吗?
谢谢。
答案 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无法打开它。