2009-09-13 60 views
0

我正在使用php动态创建图像。如果我先进入并创建文件,则图像正在创建。但是,如果我不手动创建该文件,那么我会得到以下错误。获取图像保存问题

警告:imagegif()[function.imagegif]:无法打开 'filename2.png' 的上线/www/vhosts/yourraceresults.com/htdocs/trial/TextToImage.inc.php写入144

实施例:

public function SaveTextAsPng($fontSize, $x, $y, $textContent, $fileName='image'){ 
    imagestring($this->image, $fontSize, $x, $y, $textContent, $this->text_color); 
    return imagepng($this->image, "/www/vhosts/yourraceresults.com/htdocs/admin/trial/images/".$fileName.".png"); 
} 

$ textToImage-> SaveTextAsPng(10,11,11 'fakeinfo', '文件名2');

+0

听起来像权限问题。你能写一个你想做什么的例子吗 – Vertigo 2009-09-13 16:49:13

+0

你在一个共享的主机上或者你自己的私人/专用服务器上吗? – jimyi 2009-09-13 17:29:20

回答

1

输出文件夹不存在(在这种情况下,您必须创建它),或者您没有对输出文件夹的写入权限。为了解决这个问题:

  • 如果您使用的是外壳:

    搭配chmod 777 /www/vhosts/yourraceresults.com/htdocs/trial

  • 如果您使用的是FTP客户端:

    右键单击“试用”文件夹,搜索名为“chmod”,“权限”,“权限”(也许在“属性”中),然后为其授予每个权限,或者输入chmod值777 。

+0

我做了第一个。出现同样的错误。 – Joe 2009-09-13 17:12:44

+0

/www/vhosts/yourraceresults.com/htdocs/trial是写入filename2.png的目录,对不对?如果没有,请重试相应的目录。 – 2009-09-13 17:18:11

+0

我为apporpriate目录做了这个工作,因为我改变了/www/vhosts/yourraceresults.com/htdocs/trial/images的路径以避免任何危险 – Joe 2009-09-13 17:22:42

0

您是否已正确设置了输出目录的权限?我认为你的Web服务器(和PHP一起)不能写入目标文件夹。

1

看来你的网络用户(apache,www,...)在你要写入的文件夹中没有写权限。或者,如果文件已经存在,它没有获得该文件的写入权限。

编辑:更改权限

假如你是像系统在Linux与Apache web服务器,首先你需要找出作为用户你的Web服务器正在运行。你需要获取服务器(SSH)命令shell,然后你或许可以看到Web服务器用户键入以下命令:

$ ps aux | grep httpd 

在列表中,您将看到所有正在运行的Apache进程的用户名中第一列。

让我们说网络用户是apache,你现在需要在该目录下给apache写入权限。您可以通过将组更改为apache并为该组授予写权限,或者通过将该目录的所有权更改为apache来实现。 Let's说你要更改组:

$ chgrp apache /www/vhosts/yourraceresults.com/htdocs/trial 

给所有者和用户组(Apache)的写权限:

$ chmod 775 /www/vhosts/yourraceresults.com/htdocs/trial 

Disclamer:这是一个快速解决方案,但我对安全知之甚少,欢迎评论!

+0

好的,我该如何改变它,我的权限很弱。 – Joe 2009-09-13 17:01:10

+0

使用FTP将权限更改为755,或使用SSH使用chmod。 – 2009-09-13 17:18:14

0

看来你的脚本需要在该目录上写入权限。更改这些权限的简单方法是通过FTP登录并更改FTP客户端的权限。当你右键点击名为“权限”或“文件属性”(FileZilla)或类似文件夹的文件夹时,大部分(至少是我尝试过的少数)FTP客户端提供了一个选项。它应该显示一个包含不同权限复选框的对话框;务必至少给所有者写权限。如果您位于* nix主机上,则应该能够转至目录并发出命令chmod 755。更改权限。

编辑:chmod 777。会给你最多的权限,如果755不起作用。

+0

这可能不起作用。在大多数共享环境中,运行Web服务器的unix用户和提供文件的用户是不同的。所以你需要给予完全的权限,否则Web服务器用户仍然无权在目录中写入。 – 2009-09-13 17:15:13