2013-11-13 5 views
0

Я пытаюсь создать QR-код с библиотекой php phpqrcode.
phpqrcode - сохранить файл во временный каталог

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

Я использую 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

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

EDIT: Когда я попытался изменить '/ 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 

ВТОРОЙ EDIT:
Когда я проверил мой жесткий диск I увидел, что он просто сохраняет изображения на моей корневой карте, например, «temptest.png» ... Как я могу убедиться, что он сохранит эту папку на временном сервере на моем сервере?

+0

Возможно, вам нужно изменить '$ tempDir' для'/температуры/'(с косую черту)? –

+0

Затем я получаю предупреждение, подобное tis: Warning: imagepng (/temp/test.png): не удалось открыть поток: нет такого файла или каталога в /Applications/MAMP/htdocs/surveyanyplace/site/library/phpqrcode/qrimage.php в строке 43 – nielsv

ответ

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/сайт/государственные/qrcodecaches" и изменить $pngAbsoluteFilePath и $urlRelativeFilePath следующим образом:

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

($tempDir могут быть удалены)

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

Смежные вопросы