Создание изображения в php, отображение работы, сохранение в файл не

Я создаю изображение через PHP скрипт с помощью imagepng. Это прекрасно работает и хорошо отображается на веб-сайте. даже save-as дает мне действительный файл .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, чтобы исключить любые проблемы на этом фронте. имя $наверняка является допустимой строкой без пробелов.

Ответ 1

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

И попробуйте по одному. то есть:.

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

затем

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

Чтобы вы могли изолировать ошибки.

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

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

Ответ 2

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

Как созданный файл script, права не установлены правильно, и перезапись невозможна.

после вынимания:

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

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

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

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

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

Вы можете попробовать изменить путь к:

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

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

Ответ 4

Ваш код, Фонс, спровоцировал обычную проблему, с которой я показывал изображение, созданное с помощью GD Library, но отключив любой 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" />

Спасибо.