Проблема получения изображения для сохранения

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

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

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

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

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

    Щелкните правой кнопкой мыши папку «пробная», найдите что-то под названием «chmod», «права», «разрешения» (возможно, в «свойствах»), затем дайте ему все разрешения или, иначе, введите значение chmod 777.

Кажется, ваш веб-пользователь (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: это быстрое решение, но я не знаю много о безопасности, комментарии приветствуются!

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

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

EDIT: chmod 777. предоставит вам большинство разрешений, если 755 не работает.