2

PHPライブラリphpqrcodeでQRコードを作成しようとしています。

後で使用できるように、ファイルを一時ファイルに保存したいと思います。このようなもの。

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

2番目の編集:
ハードドライブを確認したところ、「temptest.png」のようにルートマップに画像を保存しているだけでした...サーバーの一時フォルダーにこれを保存するにはどうすればよいですか?

4

1 に答える 1

2

場所 " /Applications/MAMP/htdocs/ surveyanyplace /site/public/ temptest .png " であり、ファイルが保存された場所ではありません (お気づきのように " /temptest.png " です)。

Web サーバー (Apache) 経由でファイルを直接提供するには、画像ファイルがその下にあることを確認する必要がありますDocumentRoot(通常は、Zend Framework アプリケーションの「パブリック」フォルダー)。

1 つの方法は、次のディレクトリを作成することです: " /Applications/MAMP/htdocs/surveyanyplace/site/public/qrcodecaches " を次のように変更$pngAbsoluteFilePath$urlRelativeFilePathます。

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

($tempDir取り外し可能)

注意: Zend_View_Helper_BaseUrlを参照し$urlRelativeFilePathて、サブディレクトリ内のアプリケーションを処理する際の移植性を高めることをお勧めします。

于 2013-11-13T22:59:32.060 に答える