Jump to content
  • 0

imagecreatefromjpeg() и аргумент из базы данных


Adel1ne
 Share

Question

Здравствуйте! Столкнулся со следующей проблемой:

Возникает ошибка при попытке получить в цикле пути к изображению в качестве аргумента к функции imagecreatefromjpeg() -

$result = mysql_query("SELECT img_path FROM table1");
for ($i=0;$i<mysql_num_rows($result);$i++)
{
$myrow[$i] = mysql_fetch_array($result);
$image = imagecreatefromjpeg("'".$myrow[$i]['img_path']."'");
}

Ошибка: Warning: imagecreatefromjpeg('img/1.jpg') [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in ...

Если просто прописать:

$image = imagecreatefromjpeg('img/1.jpg');

то все, конечно, работает. В чем может быть проблема?

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0


$dir = dirname(__FILE__);
define ('DS', DIRECTORY_SEPARATOR);

# ...
$file = $dir.DS.'img'.DS.'1.jpg';

Попробуйте указать полный путь.

Возможно не существует папка img или установлен chmod только для чтения.

Link to comment
Share on other sites

  • 0


$dir = dirname(__FILE__);
define ('DS', DIRECTORY_SEPARATOR);

# ...
$file = $dir.DS.'img'.DS.'1.jpg';

Попробуйте указать полный путь.

Возможно не существует папка img или установлен chmod только для чтения.

Попробовал ваш вариант, все равно apache отваливается с ошибкой... Делаю в цикле вот так:

for ($i=0;$i<mysql_num_rows($result);$i++)
{
$myrow[$i] = mysql_fetch_array($result);
imagecreatefromjpeg($dir.DS.$myrow[$i]['src_folder'].DS.$myrow[$i]['src_file']);
}

Link to comment
Share on other sites

  • 0

А ошибку апача задекларировать можно ?

Ну просто выскакивает несколько раз (5 вроде) окошко типа:

Apache HTTP Server - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства. Отправить отчет?

Тобеж глюк происходит уже на уровне приложения, а не кода PHP... При этом сам apache не срубается, тоесть другую страничку, с нормальным кодом, открыть можно.

Edited by Adel1ne
Link to comment
Share on other sites

  • 0

Местные форумчане только недавно начали осваивать азы чтения мыслей на расстоянии, а также предвидение будущего :dash:

Предоставьте полный текст ошибки. Также попробуйте отказаться от денвера, перейдя хотя бы на open-server

Edited by Radiocity
Link to comment
Share on other sites

  • 0

Местные форумчане только недавно начали осваивать азы чтения мыслей на расстоянии, а также предвидение будущего :dash:

Предоставьте полный текст ошибки. Также попробуйте отказаться от денвера, перейдя хотя бы на open-server

А где этот полный текст взять то? Просто выскакивает окошко с ошибкой приложения и с предложением отправить ошибку в Microsoft.

Link to comment
Share on other sites

  • 0

Версия php какая ?

Версия 5.3.3

Но все оказало еще интереснее!

Дело в том, что у меня часть картинок, не смотря на расширение jpg, была в формате png (то есть попросту я поменял руками расширение) и поэтому функция imagecreatefromjpeg весила намертво сервер apache.

И вот в связи с этим вопрос, а как проверять изображения, если их расширения были изменены вручную пользователем?

$_FILES['filename']['type'] - выдает именно расширение файла и тогда в функцию imagecreatefromjpeg попадет изображение png с расширением jpg и трындец!

Edited by Adel1ne
Link to comment
Share on other sites

  • 0

И вот в связи с этим вопрос, а как проверять изображения, если их расширения были изменены вручную пользователем?

Не знаю ли есть для этого средства в пхп, но даже если нет, то смотрите: откройте фаил тектовым редактором и увидите что в начале файлов присутствуют метки PNG, GIF89a, JFIF, считывайте первые, ну скажем 16 байт и сверяйте. (правда с jpeg-ом могут возникнуть трудности)

UPD: Даже можно по первым трём байтам (У жпг : яШя)

а функции типа: exif_imagetype() и mime_content_type() у меня так и не заработали, ну с последней то понятно что она в 5.3 deprecated, а вот что с первой не понятно.

Edited by LunatiK
Link to comment
Share on other sites

  • 0

А вот если установлено расширение php_fileinfo.dll:

то можно воспользоваться:


<?php
$fileName = "file.txt";

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, dirname(__FILE__)."/".$fileName);
finfo_close($finfo);

Echo $mime;
?>

где file.txt был реально jpeg фалом и скрипт выдал: image/jpeg

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy