- ベストアンサー
Cドライブにある画像を表示したい
環境はxp、apache2、php5、Postgresql8.2です。 1台のPCをサーバ&クライアントにしています。 ただ今PHPとPostgresqlの勉強をしています。 いつも質問に答えてくれてありがとうございます。 「C:\フォルダ」の中にある「aaa.jpg」と言う画像を表示させるために 以下のようにしてみました。 $pic = "C:\フォルダ\aaa.jpg"; print('<img src=$pic alt='pic' width=25 height=25>'); 「Parse error: syntax error, unexpected T_STRING in」 というエラーなってしまいました。 apacheの設定が「C:\フォルダ」を読みに行けない設定になっているので エラーになってしまうような気がするのですが どのようにすればいいのか分かりません。 ご教示して頂けたら幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そして自己突っ込み print('<img src=$pic alt=\'pic\' width=25 height=25>'); これだと文字列の中に$picと言う変数の中身を入れることが出来ません。 '(シングルクオート)の中身は「PHPパースされない」という仕様なので、$picと言う変数の中身が文字列に反映されません。 なので // ダブルクオートでくくり{ }を使って変換 print("<img src={$pic} alt='pic' width=25 height=25>"); // 文字列結合、一番高速かつスマート。推奨 print("<img src=" . $pic . " alt='pic' width=25 height=25>"); // 文字列結合、上記と差異はない print('<img src=' . $pic . ' alt="pic" width=25 height=25>'); とすれば意図した動きになるのではないかと思います。
その他の回答 (2)
- shimix
- ベストアンサー率54% (865/1590)
いくら「1台でサーバ&クライアント」でも公開用ディレクトリ以外の場所をhtmlタグに記述すべきではありません。公開できない場所に置いてあるファイルに対しては <img src="img.php?name=aaa.jpg" alt="pic" width=25 height=25> などとして、img.phpが「決められた場所(ここだとC:\フォルダ\)」のaaa.jpgをブラウザに返すようにすべきです。 #もちろんheader("Content-type: image/jpeg");が必要です。
- wp_
- ベストアンサー率54% (132/242)
syntax errorとは「文法エラー」です。 セミコロンが足りなかったり、括弧が閉じられてなかったりすると出るエラーです。 // 仕事のソースで出すと一番恥ずかしいエラーでもあります。^^; 出来るだけ正しく書こうとするなら以下の感じでしょうか。 $pic = "C:\フォルダ\aaa.jpg"; print('<img src=$pic alt='pic' width=25 height=25>'); ↓ $pic = "C:\\フォルダ\\aaa.jpg"; print('<img src=$pic alt=\'pic\' width=25 height=25>'); おそらく二行目のalt='のところでシングルクオートが閉じてしまいエラーになっているのでしょう。 またダブルクオートの中の\はエスケープさせなければなりません。 エスケープするには\を頭につけるのが慣例なので\\とします。 >apacheの設定が「C:\フォルダ」を読みに行けない設定になっているので apacheにそういう機能はなかったと思いますよ。 あるとすればOSの機能(windowsであればユーザ権限、linuxであればpermission)です。
お礼
wp_さん、こんにちは。 いつもいつもありがとうございます。 お陰様で解決しましたし、 大変勉強にもなりました。