投稿者 |
メッセージ |
|
< PHPプログラミング ~ セーフモードでmove_uploaded_file()関数が使えない |
|
時間:
日 3月 26, 2006 4:02 pm
|
|
|
登録日: 2006年2月 01日
投稿記事: 21
|
|
こんにちわ。
HTMLの入力フォームから画像のアップの操作が行いたくて
move_uploaded_file()関数を使用したスクリプトを作成したのですが、
私の借りているレンタルサーバーではPHPがセーフモードのため?(すいません、あまりよく分かってないです)move_uploaded_file()関数が使えないようです。
こういった場合、入力フォームからのファイルのアップは不可能なのでしょうか? |
|
|
|
|
|
|
|
時間:
月 3月 27, 2006 10:02 am
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
$_FILESが取れるのであれば、tmp_nameを適当な位置にコピーしてみましょう。 |
|
|
|
|
|
|
|
時間:
木 3月 30, 2006 12:22 pm
|
|
|
登録日: 2006年2月 01日
投稿記事: 21
|
|
すいません。
$img = $_FILES['upfile'];
$imgtmp = $_FILES['upfile']['tmp_name'];
$imgname = $_FILES['upfile']['name'];
$imgsize = $_FILES['upfile']['size'];
$imgtype = $_FILES['upfile']['type'];
という感じでtmp_nameは取れたのですが
「tmp_nameを適当な位置にコピー」というのはどのようにしたらよいのでしょうか? |
|
|
|
|
|
|
|
時間:
金 3月 31, 2006 11:39 am
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
|
|
|
|
|
時間:
土 4月 01, 2006 5:32 pm
|
|
|
登録日: 2006年2月 01日
投稿記事: 21
|
|
copy関数使ってみました。
ローカルではうまくいくんですけど、サーバーにアップしてみると
やっぱりダメみたいです。
「セーフモードにより制限を受けるか無効となる関数」として
move_uploaded_file()関数もcopy()関数も載っていて
「処理を行うファイル/ディレクトリが実行するスクリプトと同じUIDを有しているかどうかを確認します。」という記述があるのですが、どういうことなのでしょうか?
アップは無理なのでしょうか?
すいませんがよろしくお願いします。 |
|
|
|
|
|
|
|
時間:
月 4月 03, 2006 9:40 am
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
fopenはつかえますか?
使えるならコピーはできるとおもいますよ |
|
|
|
|
|
|
|
時間:
月 4月 03, 2006 4:00 pm
|
|
|
登録日: 2006年2月 01日
投稿記事: 21
|
|
fopen関数も使えないみたいです。
<?php
$filename = 'test.txt';
$fp = fopen($filename, 'w');
if(!$fp){die('ファイルを開けません。');}
fclose($fp);
?>
というスクリプトを実行させてみたのですがダメでした。
fopen関数も「セーフモードにより制限を受けるか無効となる関数」として上がってるみたいです。 |
|
|
|
|
|
|
|
時間:
月 4月 03, 2006 4:39 pm
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
じゃあ、だめですね。
アップロードは無理だと思います。
できるように管理者にお願いするなどしてください。 |
|
|
|
|
|
|
|
時間:
月 4月 03, 2006 5:41 pm
|
|
|
登録日: 2006年2月 01日
投稿記事: 21
|
|
そうですか。残念です。
「処理を行うファイル/ディレクトリが実行するスクリプトと同じUIDを有しているかどうかを確認します。」
という記述は結局どういう意味があるんですかね?
PHPでアップロードが難しいようなんでperlを使ってみようと考えています(画像アップ用の掲示板のフリーのCGIスクリプトは大丈夫だったのでいけると思っているのですが)。そこでちょっと質問させてください。いま作っていたPHPのスクリプトからファイルのアップ部分だけperlを呼び出すというようなことって可能なのでしょうか?もしかしてとんでもない質問してるかもしれないですけど...すいませんがよろしくお願いします。 |
|
|
|
|
|
|
|
時間:
月 4月 03, 2006 6:48 pm
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
アップの処理をPerlでかくのはできます。
Perlが対応してるかどうかは不明ですが |
|
|
|
|
|
|
|
時間:
水 4月 05, 2006 10:30 pm
|
|
|
登録日: 2006年4月 05日
投稿記事: 14
|
|
PHPセーフモードで画像のアップロードは可能です。
関数はもちろん、moved_uploaded_file()です。
で、ポイントはふたつ。
・ローカルでアップロードした画像を格納するフォルダを作成し、アップロードする。UIDとは所有者のことなので、FFFTPなんかだと、、画像を処理するスクリプトファイルと画像格納フォルダの「所有者」が同じ表記になっていればOK。
・アップロードしたフォルダは、書き込み可とする。
以上を踏まえた上で、
$dir = 'folder'; //画像格納フォルダへのパス
$tmp_name = $_FILES[ 'upfile' ][ 'temp_name' ];
$filename = $_FILES[ 'upfile' ][ 'name' ];
move_uploaded_file($tmp_name, "$dir/$filename");
これでOKなはず。
ちなみに、サーバ側でPHPにフォルダを作らせたらOUT。
↓このへん参考に
http://www.php.net/manual/ja/features.file-upload.php |
|
|
|
|
|
|
|
時間:
木 4月 06, 2006 9:42 am
|
|
|
登録日: 2006年2月 01日
投稿記事: 21
|
|
フォルダの属性を書き込み可能にしたらアップできました!
ちびさんどうもありがとうございます。
あとちょっと質問なんですが、今回はcopy関数で試したんですけど、move_uploaded_file関数を使用する場合は「画像格納フォルダへのパス」ってどこからルートをたどればよいものなのでしょうか? |
|
|
|
|
|
|
|
時間:
木 4月 06, 2006 9:47 am
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
可能でしたか。
うっかり関数自体が使えないのかと思いました。
間違ったことをおしえてしまってごめんなさい>takeさん |
|
|
|
|
|
|
|
時間:
木 4月 06, 2006 1:40 pm
|
|
|
登録日: 2006年4月 05日
投稿記事: 14
|
|
take wrote: |
フォルダの属性を書き込み可能にしたらアップできました!
ちびさんどうもありがとうございます。
あとちょっと質問なんですが、今回はcopy関数で試したんですけど、move_uploaded_file関数を使用する場合は「画像格納フォルダへのパス」ってどこからルートをたどればよいものなのでしょうか?
|
基本的にはフルパスです。 |
|
|
|
|
|
|
|