質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

パーミッション、パスは問題ないのにmove_uploaded_fileが動かない。

alberorana
alberorana

総合スコア0

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

5回答

0評価

2クリップ

66閲覧

投稿2017/06/28 07:55

編集2022/01/12 10:58

みなさまお世話になっております。
###前提・実現したいこと
JPG、pdfなどのファイルをmove_uploaded_fileでアップロードするプログラムを作っているのですが、本番環境でのみ動きません。

最終的には/var/tmpディレクトリから/home/user/tmpに移動したい。
###発生している問題・エラーメッセージ

\] PHP Warning: move_uploaded_file\(\): Unable to move '/var/tmp/phpBI6233' to '/home/tmp/kaeru/frog-32568_1280\.png' in /var/www/html/drop_zone_upload\.php on line 23, referer:

###該当のソースコード

<\?php if \(!empty\(\$_FILES\)\) {//アップロードファイルがある時の処理 \$tempFile = \$_FILES\['file'\]\['tmp_name'\]; if\(!file_exists\(\$uploaddir\)\){//アップロードディレクトリの存在確認 mkdir\(\$uploaddir, 0700\); } \$tmpdir = '/home/tmp/' \. \$udata\['uid'\]; \$_SESSION\['tempdir'\] = \$tmpdir; \$targetFile = \$tmpdir \. '/' \. \$_FILES\['file'\]\['name'\]; \$_SESSION\['targetfile'\] = \$targetFile; //ここでエラーになる move_uploaded_file\(\$tempFile,\$targetFile\); } \?>

###試したこと
・ディレクトリのパーミッションを0777にする
・ACLにapacheを追加する

###補足情報(言語/FW/ツール等のバージョンなど)
・php 7.0.19
・CentOS6.8
ローカル開発環境、本番環境ともに同じバージョンです。
ローカル開発環境はVMに構築しています。

なぜ本番環境でのみエラーが発生するかわからず、困っているのでよろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806
m.ts10806

2017/06/28 08:05 編集

is_uploaded_file\(\)を実行した場合にtrueが返っていますか?
m.ts10806
m.ts10806

2017/06/28 08:10 編集

エラーメッセージが途中のところを提示されているようですが、全文提示は可能ですか?※サーバIPなどがある場合は***などマスクかけてもらって構いません。
m.ts10806
m.ts10806

2017/06/28 08:14

何度も確認すみません。\$uploaddirの存在確認&mkdir\(\)しているにも関わらず使っていないのはなぜでしょう?/home/user/tmpにアップしたいとのことですが、\$tmpdirでは'/home/tmp/'としているところが気になります。
alberorana
alberorana

2017/06/28 08:24

さっそくのご回答ありがとうございます。\$uploaddirは修正前のコードが残ってしまっていました。そのため、この質問では関係がないので大丈夫です。一時ディレクトリにつきましてはドラッグアンドドロップアップロードのライブラリを使っているため、一度私が定義した一時ディレクトリにアップロードするようにしています。(一時ディレクトリでウイルス検査するため)
alberorana
alberorana

2017/06/28 08:32

is_uploaded_file\(\)はfalseが返ってきました。
kunai
kunai

2017/06/28 08:49

修正前のコードが残ったのではなく、実際に今動かしているソースコードを提示いただけませんか?
alberorana
alberorana

2017/06/28 08:50

書き方が悪く申し訳ございません。残ったという意味は変数とmkdirのコードが残っただけですので、質問に記載したコードで動いております。よろしくお願いします。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。