Проблема с получением изображения для сохранения - PullRequest
0 голосов
/ 13 сентября 2009

Я создаю изображение динамически, используя 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', 'filename2');

Ответы [ 4 ]

1 голос
/ 13 сентября 2009

Либо выходная папка не существует (в этом случае вы должны ее создать), либо у вас нет прав записи в выходную папку. Чтобы это исправить:

  • Если вы используете оболочку:

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

  • Если вы используете FTP-клиент:

    Щелкните правой кнопкой мыши по папке "trial", найдите что-то под названием "chmod", "rights", "permissions" (возможно, в "properties"), затем дайте ему каждое разрешение или, альтернативно, введите значение chmod 777.

1 голос
/ 13 сентября 2009

Похоже, у вашего веб-пользователя (apache, www, ...) нет прав на запись в папку, в которую вы пытаетесь написать. Или, если файл уже существует, у него нет разрешения на запись для этого файла.

Редактировать: Изменение прав доступа

Предположим, что вы работаете в системе типа linux с веб-сервером apache , сначала вам необходимо выяснить, под каким пользователем работает ваш веб-сервер. Вам нужно получить командную оболочку на сервере (ssh), и тогда вы, вероятно, увидите, что пользователь веб-сервера набирает следующую команду:

$ ps aux | grep httpd

В списке вы увидите все запущенные процессы apache с именем пользователя в первом столбце.

Допустим, веб-пользователь apache, теперь вам нужно дать разрешения на запись apache в этот каталог. Это можно сделать, изменив группу на apache и предоставив разрешения на запись для этой группы или изменив владельца каталога на apache. Допустим, вы хотите сменить группу:

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

Предоставить владельцу и группе пользователей (apache) права на запись:

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

Disclamer: это быстрое решение, но я не знаю много о безопасности, комментарии приветствуются!

0 голосов
/ 13 сентября 2009

Кажется, вашему сценарию нужны разрешения на запись в этот каталог. Простой способ изменить эти разрешения - войти в систему через FTP и изменить разрешения с вашего FTP-клиента. Большинство (по крайней мере, из немногих, которые я пробовал) FTP-клиенты предлагают опцию, когда вы щелкаете правой кнопкой мыши папку «Разрешения» или «Атрибуты файла» (FileZilla) или что-то подобное. Должен отображаться диалог с различными флажками разрешений; не забудьте дать хотя бы владельцу разрешение на запись. Если вы находитесь на хосте * nix, вы сможете перейти в каталог и выполнить команду chmod 755. изменить разрешения.

РЕДАКТИРОВАТЬ: chmod 777. даст вам большинство разрешений, если 755 не работает.

0 голосов
/ 13 сентября 2009

Правильно ли установлены права на выходной каталог? Я думаю, что ваш веб-сервер (и php с ним) не может писать в папку назначения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...