создание изображения в php, отображение работает, сохранение в файл не - PullRequest
13 голосов
/ 12 сентября 2009

Я создаю изображение с помощью php-скрипта, используя imagepng. Это отлично работает и хорошо отображается на сайте. даже сохранение-как дает мне действительный файл .png

header( "Content-type: image/png" );
imagepng($my_img);
$save = "../sigs/". strtolower($name) .".png";
//imagepng($my_img, $save, 0, NULL);
imagepng($my_img, $save);

Это конечная часть кода, который я использую для создания файла и возврата его в виде рисунка на веб-сайте. но оба варианта (пробовал также выделенный) не сохраняют файл на веб-сервере для дальнейшего использования. Папка, в которую записывается файл, на данный момент даже установлена ​​на chmod 777, чтобы исключить любые проблемы на этом фронте. $ name наверняка является допустимой строкой без пробелов.

Ответы [ 4 ]

27 голосов
/ 12 сентября 2009

Убедитесь, что у PHP есть права на запись файлов в эту папку. Вероятно, chmod влияет только на пользователей FTP или отдельных пользователей.

И попробуйте по одному. i.e.:

header( "Content-type: image/png" );
imagepng($my_img);

тогда

$save = "../sigs/". strtolower($name) .".png";
imagepng($my_img, $save);

Чтобы вы могли выделить ошибки.

Сначала попытайтесь сохранить в той же папке, что и скрипт, посмотрите, есть ли проблемы.

$save = strtolower($name) .".png";
imagepng($my_img, $save);
10 голосов
/ 12 сентября 2009

Большое спасибо за вашу помощь в очищении моего разума и в том, чтобы я смотрел с другой стороны. Все связано с правами на файл.

Поскольку сценарий сгенерировал файл, права не установлены правильно и перезапись невозможна.

после вывоза:

header( "Content-type: image/png" );
imagepng($my_img);

Я получил сообщение об ошибке из-за невозможности записи. когда для файла руководства установлено значение chmod 755, скрипт работает как шарм.

поэтому новый код теперь выглядит так:

header( "Content-type: image/png" );
imagepng($my_img);
$save = "../sigs/". strtolower($name) .".png";
chmod($save,0755);
imagepng($my_img, $save, 0, NULL);
imagedestroy($my_img);

Установка файла для записи исправила проблему, и все работает как положено.

С наилучшими пожеланиями Fons

3 голосов
/ 12 сентября 2009

Вы уверены, что относительный путь правильный? Это может немного сбивать с толку, если этот скрипт вызывается из другого скрипта.

Вы можете попытаться изменить путь на:

$save = $_SERVER['DOCUMENT_ROOT'] . "/sigs/" . strtolower($name) . ".png";

Редактировать: И, конечно, проверить возвращаемое значение imagepng () и ваш журнал ошибок

1 голос
/ 01 марта 2017

Ваш код, Fons, спровоцировал обычную проблему с отображением изображения, созданного с помощью библиотеки GD, но отключением любого HTML-кода после Php. Убрав строку ниже

header( "Content-type: image/png" ); imagepng($image);

и только используя следующие 2 строки в Php, я смог сохранить файл и затем получить доступ к изображению в разделе HTML (нижняя строка кода), не разрушая кодирование HTML.

$save='./img/Graph.png'; chmod($save,0755);
imagepng($image,$save,0,NULL); imagedestroy($image);

<img width="500" height="350" align="top" alt="" src="./img/Graph.png" />

Спасибо.

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