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