在php中创建图像,显示工作,保存到文件不

时间:2009-09-11 23:44:17

标签: php image

我正在使用imagepng通过php脚本创建一个图像。 这工作正常,并在网站上显示良好。 甚至保存 - 给我一个有效的.png文件

header( "Content-type: image/png" );
imagepng($my_img);
$save = "../sigs/". strtolower($name) .".png";
//imagepng($my_img, $save, 0, NULL);
imagepng($my_img, $save);

这是我用来生成文件并在网站上将其作为图片返回的代码的结尾部分。但是这两个选项(尝试过标记的选项)都不会将文件保存到网络服务器以供以后使用。 写入文件的文件夹目前甚至设置为chmod 777,以排除该方面的任何问题。 $ name肯定是一个没有空格的有效字符串。

4 个答案:

答案 0 :(得分:26)

确保PHP具有将文件写入该文件夹的权限。 chmod可能只影响FTP用户或特定用户。

一次尝试一个。即:

header( "Content-type: image/png" );
imagepng($my_img);

然后

$save = "../sigs/". strtolower($name) .".png";
imagepng($my_img, $save);

这样你就可以隔离错误。

首先尝试保存与脚本相同的文件夹,看看是否有任何问题。

$save = strtolower($name) .".png";
imagepng($my_img, $save);

答案 1 :(得分:10)

非常感谢你帮助我清理头脑并让我从不同角度看待你。 所有这些都与文件的权利有关。

当脚本生成文件时,权限设置不正确,无法覆盖。

取出后:

header( "Content-type: image/png" );
imagepng($my_img);

我收到一条关于无法写入的错误消息。 当将文件手册设置为chmod 755时,脚本就像魅力一样。

所以新代码现在看起来像这样:

header( "Content-type: image/png" );
imagepng($my_img);
$save = "../sigs/". strtolower($name) .".png";
chmod($save,0755);
imagepng($my_img, $save, 0, NULL);
imagedestroy($my_img);

将文件设置为可写入可修复问题,并且一切正常。

祝你好运 冯斯希

答案 2 :(得分:3)

您确定相对路径是否正确?如果从另一个脚本调用该脚本,那可能会有点混乱。

您可以尝试将路径更改为:

$save = $_SERVER['DOCUMENT_ROOT'] . "/sigs/" . strtolower($name) . ".png";

编辑当然还要检查imagepng()的返回值和错误日志

答案 3 :(得分:1)

您的代码,Fons,引发了我在显示使用GD库创建的图像但在Php之后禁用任何Html代码时遇到的常见问题。删除下面的行

header( "Content-type: image/png" ); imagepng($image);

并且仅使用Php中的后两行我能够保存文件,然后访问Html部分中的图像(代码的底线),而不会破坏Html编码。

$save='./img/Graph.png'; chmod($save,0755);
imagepng($image,$save,0,NULL); imagedestroy($image);

<img width="500" height="350" align="top" alt="" src="./img/Graph.png" />

感谢。