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

phpでのファイルアップロードに付いて教えてください。

あるサーバーAでは動作しているのですが、
あるサーバーBに同じものをアップすると
ファイルのアップロードができません。

考えられる原因を教えてください。

php のバージョンは 4.3.4 です。
(共用のレンタルサーバー使用)

ちなみに以下の全てで何も表示されません。
(フォームのname属性は img1です。)

print $img1_name;
print $_FILES['img1']['name']
print $HTTP_POST_FILES['img1']['name']

よろしくお願いします。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:name PHP print アップロード サーバー
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● Yota
●23ポイント

1.Apacheなどのウェブサーバを使っていると思いますが、そのApacheのユーザがアップロードしようとしているフォルダ(ディレクトリ)に書き込む権限を与えられていなければ、アップロードできません。

2.php.iniでfile_uploads = Onになっていない。

◎質問者からの返答

パーミッションは707と777で試しました。

file_uploadsはOnになっています。


2 ● cooper0524
●23ポイント

php.iniの設定で、

file_uploads

がOnであること

upload_max_filesize

のサイズがアップするファイルより大きいこと

upload_tmp_dir

のディレクトリが存在すること、パーミッションが書き込み可になっていること

を確認してみてください。

◎質問者からの返答

file_uploadsはOnになっています。

upload_max_filesizeは2Mです。

(アップしようとしているファイルは20KB程度です)

upload_tmp_dirはno valueです。

がサーバーAも同様ですがそちらはアップロードできます。


3 ● tezcello
●22ポイント

http://www.php.net/manual/ja/ini.core.php#ini.upload-tmp-dir

値が設定されていないと、システムの値を使うとなっていますから、

サーバAとサーバBではそれらが違うのでは?

Aではそのディレクトリに対する書き込み許可があるが、Bではないと。

で、

>>サーバーのデフォルトディレクトリは、 PHP を実行する環境において環境変数 TMPDIR を設定する ことにより変更することができます。<<

という事なので、こちらが設定されていないか設定されているディレクトリが書き込めないと。

「php.ini または httpd.confで設定可能なエントリ」だそうですから、これらが変更できない場合は不可能でしょうね。

◎質問者からの返答

ありがとうございます。

明日サーバーの管理者に聞いてみます。


他に心当たりがありましたらお願いします。

もちろん他の方でも構いません。

よろしくお願いします。


4 ● gekikawa
●22ポイント

>print $img1_name;

>print $HTTP_POST_FILES['img1']['name']

このような形で呈示されているので、もしかしたら...


サーバーAではregister_globals = Onになっていて、

外部からの変数取得に、スーパーグローバル変数を使っていない部分

がある可能性はないですか?

サーバーBはデフォルトでregister_globals = Offだと思うので、

不具合の原因となるかも知れません。


あと$_FILES['img1']['error']はいかがでしょうか?

◎質問者からの返答

ありがとうございます。

register_globalsは両方ともOffです。

もしかしてと思い一応

>print $img1_name;

>print $HTTP_POST_FILES['img1']['name']

とも書きました。

$_FILES['img1']['error']も

$_FILES['img1']['name']同様に

何も表示されません。

関連質問


●質問をもっと探す●



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