Php 获取要保存的图像时出现问题

Php 获取要保存的图像时出现问题,php,image,Php,Image,我正在使用php动态创建一个图像。如果我先进入并创建文件,则会创建图像。但是,如果我不手动创建文件,则会出现以下错误 警告:imagegif()[function.imagegif]:无法打开“filename2.png”以便在第144行的/www/vhosts/yourracesults.com/htdocs/trial/TextToImage.inc.php中写入 例如: public function SaveTextAsPng($fontSize, $x, $y, $textConten

我正在使用php动态创建一个图像。如果我先进入并创建文件,则会创建图像。但是,如果我不手动创建文件,则会出现以下错误


警告:imagegif()[function.imagegif]:无法打开“filename2.png”以便在第144行的/www/vhosts/yourracesults.com/htdocs/trial/TextToImage.inc.php中写入

例如:

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','filename2')

您是否正确设置了输出目录的权限?我认为您的web服务器(以及带有它的php)无法写入目标文件夹。

您的web用户(apache、www等)似乎没有在您尝试写入的文件夹中的写入权限。或者,如果文件已经存在,则它没有该文件的写入权限

编辑:更改权限

假设您使用的是一个类似linux的系统,带有ApacheWeb服务器,那么首先您需要找出web服务器运行的用户。您需要在服务器上获取命令shell(ssh),然后您可能会看到web服务器用户键入以下命令:

$ ps aux | grep httpd
在列表中,您将看到所有正在运行的apache进程,其用户名位于第一列

假设web用户是apache,您现在需要在该目录中授予apache写权限。您可以通过将组更改为apache并向该组授予写入权限,或者将目录的所有权更改为apache来实现这一点。假设您要更改组:

$ chgrp apache /www/vhosts/yourraceresults.com/htdocs/trial
授予所有者和组用户(apache)写权限:

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

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

您的脚本似乎需要该目录的写入权限。更改这些权限的一个简单方法是通过FTP登录并从FTP客户端更改权限。大多数(至少是我尝试过的少数几个)FTP客户端在右键单击名为“权限”或“文件属性”(FileZilla)之类的文件夹时都会提供一个选项。它应该显示具有不同权限复选框的对话框;确保至少给予所有者写入权限。如果您在*nix主机上,您应该能够转到该目录并发出命令chmod 755。更改权限


编辑:chmod777。如果755不工作,将为您提供最大权限。

输出文件夹不存在(在这种情况下,您必须创建它),或者您没有对输出文件夹的写入权限。要解决此问题,请执行以下操作:

  • 如果您使用的是shell:


    chmod 777/www/vhosts/yourracesults.com/htdocs/trial

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

    右键单击“试用”文件夹,搜索名为“chmod”、“rights”、“permissions”(可能在“properties”中)的内容,然后为其授予所有权限,或者输入chmod值777


听起来好像权限有问题。你能举例说明你在共享主机或你自己的私有/专用服务器上尝试做什么吗?好的,我该如何更改它,我的权限非常弱。使用FTP将权限更改为755,或者使用SSH使用chmod。这可能不起作用。在大多数共享环境中,运行web服务器的unix用户和提供文件的用户是不同的。因此,您需要授予完全权限,否则web服务器用户仍然没有写入目录的权限。/www/vhosts/yourracesults.com/htdocs/trial是写入filename2.png的目录,对吗?如果没有,请在相应的目录上重试。我在将路径更改为/www/vhosts/yourracesults.com/htdocs/trial/images时,对相应的目录执行了此操作,以避免任何风险。这可能是chown问题吗?chown应该设置为什么。从代码看,合适的目录是/www/vhosts/yourracesults.com/htdocs/admin/trial/images/(您省略了admin dir)。谢谢,这是两件事的组合。我现在明白了。