使用 file_put_contents() 将文件保存到文件夹不起作用


Saving file to folder using file_put_contents() doesn't work

我一直在研究一个小的PHP脚本,该脚本从base64字符串动态创建图像并将其保存在文件夹中tmp(已经存在!)。这是我save.php文件。

// get base-64 string from form
$filteredData = substr($_POST['img_val'], strpos($_POST['img_val'], ",")+1);
// decode string
$unencodedData = base64_decode($filteredData);
// create unique filename
$a = uniqid();
// name, location and file extension
$compfile = '/tmp/' . $a . '.png';
// save image
file_put_contents($compfile, $unencodedData);
// print image
echo '<img src="' . $compfile . '" />';

奇怪的是:它既不会在页面上创建也不会呈现图像,因为我的$compfile变量中的/tmp/。当我删除它时,一切都像一个魅力,并且图像是在同一文件夹中创建的。

不幸的是,我真的希望在/tmp/文件夹中创建图像。在$compfile之前是一个随机生成的文件名,而是被称为/tmp/img.png我能够保存以创建名为img.png的图像并将其保存到tmp

我在这里错过了什么?

(谢谢你的时间。

由于我想这是解决方案,因此将其作为答案发布。

我认为你想要"tmp/" . $a . ".png"而不是"/tmp/" . $a . ".png".最好始终使用绝对路径,因此:__DIR__ . "/tmp/" . $a . ".png" .这消除了任何困惑。