投稿者 メッセージ
<  PHPプログラミング  ~  セーフモードでmove_uploaded_file()関数が使えない
take
投稿1時間: 日 3月 26, 2006 4:02 pm  引用



登録日: 2006年2月 01日
投稿記事: 21

こんにちわ。
HTMLの入力フォームから画像のアップの操作が行いたくて
move_uploaded_file()関数を使用したスクリプトを作成したのですが、
私の借りているレンタルサーバーではPHPがセーフモードのため?(すいません、あまりよく分かってないです)move_uploaded_file()関数が使えないようです。
こういった場合、入力フォームからのファイルのアップは不可能なのでしょうか?
トップに移動
ユーザー情報を表示 メッセージを送信
しもやん
投稿1時間: 月 3月 27, 2006 10:02 am  引用



登録日: 2006年3月 23日
投稿記事: 48

$_FILESが取れるのであれば、tmp_nameを適当な位置にコピーしてみましょう。
トップに移動
ユーザー情報を表示 メッセージを送信
take
投稿1時間: 木 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を適当な位置にコピー」というのはどのようにしたらよいのでしょうか?
トップに移動
ユーザー情報を表示 メッセージを送信
しもやん
投稿1時間: 金 3月 31, 2006 11:39 am  引用



登録日: 2006年3月 23日
投稿記事: 48

copy関数とかつかいましょう
トップに移動
ユーザー情報を表示 メッセージを送信
take
投稿1時間: 土 4月 01, 2006 5:32 pm  引用



登録日: 2006年2月 01日
投稿記事: 21

copy関数使ってみました。
ローカルではうまくいくんですけど、サーバーにアップしてみると
やっぱりダメみたいです。

「セーフモードにより制限を受けるか無効となる関数」として
move_uploaded_file()関数もcopy()関数も載っていて
「処理を行うファイル/ディレクトリが実行するスクリプトと同じUIDを有しているかどうかを確認します。」という記述があるのですが、どういうことなのでしょうか?
アップは無理なのでしょうか?
すいませんがよろしくお願いします。
トップに移動
ユーザー情報を表示 メッセージを送信
しもやん
投稿1時間: 月 4月 03, 2006 9:40 am  引用



登録日: 2006年3月 23日
投稿記事: 48

fopenはつかえますか?
使えるならコピーはできるとおもいますよ
トップに移動
ユーザー情報を表示 メッセージを送信
take
投稿1時間: 月 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関数も「セーフモードにより制限を受けるか無効となる関数」として上がってるみたいです。
トップに移動
ユーザー情報を表示 メッセージを送信
しもやん
投稿1時間: 月 4月 03, 2006 4:39 pm  引用



登録日: 2006年3月 23日
投稿記事: 48

じゃあ、だめですね。
アップロードは無理だと思います。

できるように管理者にお願いするなどしてください。
トップに移動
ユーザー情報を表示 メッセージを送信
take
投稿1時間: 月 4月 03, 2006 5:41 pm  引用



登録日: 2006年2月 01日
投稿記事: 21

そうですか。残念です。
「処理を行うファイル/ディレクトリが実行するスクリプトと同じUIDを有しているかどうかを確認します。」
という記述は結局どういう意味があるんですかね?

PHPでアップロードが難しいようなんでperlを使ってみようと考えています(画像アップ用の掲示板のフリーのCGIスクリプトは大丈夫だったのでいけると思っているのですが)。そこでちょっと質問させてください。いま作っていたPHPのスクリプトからファイルのアップ部分だけperlを呼び出すというようなことって可能なのでしょうか?もしかしてとんでもない質問してるかもしれないですけど...すいませんがよろしくお願いします。
トップに移動
ユーザー情報を表示 メッセージを送信
しもやん
投稿1時間: 月 4月 03, 2006 6:48 pm  引用



登録日: 2006年3月 23日
投稿記事: 48

アップの処理をPerlでかくのはできます。
Perlが対応してるかどうかは不明ですが
トップに移動
ユーザー情報を表示 メッセージを送信
ちぴ
投稿1時間: 水 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
トップに移動
ユーザー情報を表示 メッセージを送信
take
投稿1時間: 木 4月 06, 2006 9:42 am  引用



登録日: 2006年2月 01日
投稿記事: 21

フォルダの属性を書き込み可能にしたらアップできました!
ちびさんどうもありがとうございます。

あとちょっと質問なんですが、今回はcopy関数で試したんですけど、move_uploaded_file関数を使用する場合は「画像格納フォルダへのパス」ってどこからルートをたどればよいものなのでしょうか?
トップに移動
ユーザー情報を表示 メッセージを送信
しもやん
投稿1時間: 木 4月 06, 2006 9:47 am  引用



登録日: 2006年3月 23日
投稿記事: 48

可能でしたか。
うっかり関数自体が使えないのかと思いました。
間違ったことをおしえてしまってごめんなさい>takeさん
トップに移動
ユーザー情報を表示 メッセージを送信
ちぴ
投稿1時間: 木 4月 06, 2006 1:40 pm  引用



登録日: 2006年4月 05日
投稿記事: 14

take wrote:
フォルダの属性を書き込み可能にしたらアップできました!
ちびさんどうもありがとうございます。

あとちょっと質問なんですが、今回はcopy関数で試したんですけど、move_uploaded_file関数を使用する場合は「画像格納フォルダへのパス」ってどこからルートをたどればよいものなのでしょうか?


基本的にはフルパスです。
トップに移動
ユーザー情報を表示 メッセージを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  PHPプログラミング

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.