人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

php5.1.6でのエラーメッセージについてお伺いします。
サーバーは、エックスサーバーです。

Warning: copy(img/http://www.hoge.com/03.png) [function.copy]: failed to open stream: No such file or directory in /home/xxxxxxx/xxx.com/public_html/qr/google.php on line 41
これはどういうエラーなのでしょうか?
下記コードのcopy($qr, $imgfile);部分で出ています。


define('QR_URI', 'http://chart.apis.google.com/chart');
set_time_limit(0);
$data = array("http://www.hoge.com/01", "http://www.hoge.com/02", "http://www.hoge.com/03");
foreach($data as $var) {
$imgfile = 'img/' . $var . '.png';
if (!file_exists($imgfile)) {
$qr = QR_URI . '?chs=200x200&cht=qr&chld=m|1&chl=' . urlencode($var);
copy($qr, $imgfile);
}
}


よろしくお願いします。

●質問者: seadwell
●カテゴリ:ウェブ制作
✍キーワード:AS Google HOME ON open
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●28ポイント

【原因】

Linuxではファイル名に / は使えないので書き込みに失敗します

( / はディレクトリの区切りに使われる文字のためです)

【解説】

file_existsはファイルまたはディレクトリの存在を探すだけなので / が区切り文字と認識されてもエラーの原因とはならず、単にFalseという結果になります

copyでは / をディレクトリの区切り文字としてしまうためNo such file or directory(ファイルかディレクトリが見当たらない)というエラーになります

【対応例】

(例1) / を _ などに置き換えてしまう

(例2)ファイル名はarray("www.hoge.com/01", "www.hoge.com/02", "www.hoge.com/03");といった具合にしておき、

copyの前に www.hoge.com というディレクトリの存在確認(無ければ作る)をしてから copyを行うようにする

◎質問者からの返答

あっさり動きました。

そんなルールがあるなんて今知りました。

ありがとうございます。


2 ● deflation
●42ポイント ベストアンサー
$imgfile = 'img/' . $var . '.png';

において、コピー先が "img/http://www.hoge.com/01.png", "img/http://www.hoge.com/02.png", "img/http://www.hoge.com/03.png" になってしまっているのがエラーの原因です。


下記のように書き直してみて下さい。

define('QR_URI', 'http://chart.apis.google.com/chart');
set_time_limit(0);
$data = array(
 "http://www.hoge.com/01",
 "http://www.hoge.com/02",
 "http://www.hoge.com/03"
);
foreach($data as $var) {
 preg_match("/\/([0-9]+)$/", $var, $items);
 $imgfile = 'img/' . $items[1] . '.png';
 if (!file_exists($imgfile)) {
 $qr = QR_URI . '?chs=200x200&cht=qr&chld=m|1&chl=' . urlencode($var);
 copy($qr, $imgfile);
 }
}
◎質問者からの返答

ファイル名変更のご指導までいただきありがとうございます。

無事ファイルは出力されました。

少し考えれば、ファイル名に同じURLまで含める必要は無いですね。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ