phpqrcode — сохранить файл во временный каталог

Я пытаюсь создать QR-код с помощью библиотеки php phpqrcode.

Я хочу сохранить файл во временном файле, чтобы потом использовать его. Что-то вроде этого.

Я использую Zend Framework и хочу использовать временный каталог. Это то, что у меня есть до сих пор:

require_once 'phpqrcode/qrlib.php';
require_once 'phpqrcode/qrconfig.php';

$tempDir = '/temp';

$fileName = 'test'.'.png';

$pngAbsoluteFilePath = $tempDir . $fileName;
$urlRelativeFilePath = '/temp' . $fileName;

// generating
if (!file_exists($pngAbsoluteFilePath)) {
    QRcode::png('http://mylink.com/s/'.$quiz_url, $pngAbsoluteFilePath, 'L', 4, 2);
    echo 'File generated!';
    echo '<hr />';
} else {
    echo 'File already generated! We can use this cached file to speed up site on common codes!';
    echo '<hr />';
}

echo 'Server PNG File: '.$pngAbsoluteFilePath;
echo '<hr />';

// displaying
echo '<img src="'.$urlRelativeFilePath.'" />';

Мой вывод показывает:

Сервер PNG Файл: /temptest.png

И изображение, которое не может быть найдено. Может ли кто-нибудь помочь мне в пути?

РЕДАКТИРОВАТЬ: Когда я попытался изменить '/temp' на '/temp/', я получил это предупреждение:

Warning: imagepng(/temp/test.png): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/surveyanyplace/site/library/phpqrcode/qrimage.php on line 43

ВТОРОЕ РЕДАКТИРОВАНИЕ:
Когда я проверил свой жесткий диск, я увидел, что он просто сохраняет изображения на моей корневой карте, например 'temptest.png'... Как я могу убедиться, что он сохраняет это во временной папке? на моем сервере?


person nielsv    schedule 13.11.2013    source источник
comment
Возможно, вам нужно изменить $tempDir на /temp/ (с косой чертой в конце)?   -  person Filippos Karapetis    schedule 13.11.2013
comment
Затем я получаю предупреждение вроде этого: Предупреждение: imagepng(/temp/test.png): не удалось открыть поток: Нет такого файла или каталога в /Applications/MAMP/htdocs/surveyanyplace/site/library/phpqrcode/qrimage.php на строка 43   -  person nielsv    schedule 13.11.2013


Ответы (1)


Ваш браузер не может найти изображение, поскольку он ищет его по URL-адресу "http://domain.tld/temptest.png", который относится к расположению "/Applications/MAMP/htdocs/surveyanyplace/site/public/temptest.png" на вашем диске и не является местом сохранения файла (это "/temptest.png", как вы заметили).

Чтобы напрямую обслуживать файлы через ваш веб-сервер (Apache), вы должны убедиться, что файл изображения находится под ним DocumentRoot (обычно это «общедоступная» папка вашего приложения Zend Framework)

Один из способов — создать следующий каталог: «/Applications/MAMP/htdocs/surveyanyplace/site/public/qrcodecaches» и изменить $pngAbsoluteFilePath и $urlRelativeFilePath следующим образом:

$pngAbsoluteFilePath = APPLICATION_PATH . '/../public/qrcodecaches/' . $fileName;
$urlRelativeFilePath = '/qrcodecaches/' . $fileName;

($tempDir можно удалить)

NB: вы можете взглянуть на Zend_View_Helper_BaseUrl, чтобы сделать $urlRelativeFilePath более переносимым при работе с приложениями внутри подкаталога

person CDuv    schedule 13.11.2013