1

URL経由で画像をアップロードするフォームを作成し、そこからサーバーにコピーしようとしています。

次のスレッドを検索します。

私はこれを試しました:

$pic = Submitted image URL
$pic = Submitted image name . ".jpg"

copy($pic, $_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname);

結果:

警告: copy(mydir/mypic.jpg) [function.copy]: ストリームを開けませんでした: No such file or directory in /home/user/public_html/mysite.ca/upload.php on line 42

これ:

$fp = fopen($_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname, "w");
fwrite($fp, $pic);
fclose($fp);

結果:

警告: fwrite() は、パラメーター 1 がリソースであると想定し、47 行目の /home/user/public_html/mysite.ca/upload.php で指定されたブール値です

警告: fclose() は、パラメーター 1 がリソースであると想定し、48 行目の /home/user/public_html/mysite.ca/upload.php で指定されたブール値です

ディレクトリのアクセス許可は 777 で、サーバー上のどこにも個人情報はありません。どのログにもエラーはありません。これをトラブルシューティングする方法がわかりません。

4

3 に答える 3

0

$fp = fopen($_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname, "w");これは問題のようです。のように 2 つの部分でこれを行い$path = $_SERVER['DOCUMENT_ROOT'] . '/mydir/'.$picname; $fp = fopen($path, "w");ます。今、あなたはecho $pathそれが正しいかどうかを確認できますか? それでも問題が解決しない場合は、相対パスを使用し$path = "./mydir/$picname"; echo $path;て、そのフォルダーに直接移動して、フォルダーが存在するかどうかを確認してください。

于 2013-05-04T17:27:39.100 に答える
0

警告: copy(mydir/mypic.jpg) [function.copy]: ストリームを開けませんでした: No such file or directory in /home/user/public_html/mysite.ca/upload.php on line 42

ファイルをコピーしようとしている宛先パスが間違っているようです。

パスに実際に何が含まれているかを確認しましたか?

var_dump($_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname);

現在のエラーとは別に、クライアントが送信するパス/ファイル名情報を受け入れて、それ以上の制御/制限なしで画像を保存する名前を作成すると、サーバーに大きなセキュリティ ホールが生じます。

于 2013-05-04T17:31:20.110 に答える