
いつもお世話になっております。
PHP初心者です。
現在、Linuxでサーバー構築をしているのですがWindowsでは問題の無かった画像のアップロードができません。
WindowsではXAMPP1.7.3を使用していました。
LinuxはCentOS5.4でXAMPP for Linux1.7.4を使用しています。
Windowsでは出ない以下のエラーが出ます。
●Warning: move_uploaded_file(./book_picture/digi.jpg) [function.move-uploaded-file]: failed to open stream: 許可がありません in /opt/lampp/htdocs/sample23.php on line 24
●Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpGDHAL8' to './book_picture/digi.jpg' in /opt/lampp/htdocs/sample23.php on line 24
php.iniのfile_uploadsはOnになっています。
php.iniのupload_max_filesize とpost_max_sizeは2Mと8Mになっています。
php.iniのupload_tmp_dirは設定されていないのでデフォルトの場所になっていると思います。
apacheを実行しているユーザで書き込みできなくなっているのでしょうか?一般ユーザではなく
rootで入っていっるのですが。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
> ●Warning: move_uploaded_file(./book_picture/digi.jpg) [function.move-uploaded-file]: failed to open stream: 許可がありません in /opt/lampp/htdocs/sample23.php on line 24
このメッセージからすると、文字通り
> apacheを実行しているユーザで書き込みできなくなっているのでしょうか?
が原因でしょう。
WWWサーバ(apache)は、「ユーザー apache」の権限で動いています。
ですから、そのWWWサーバの元で動くPHPプログラムからファイルを作成(書き込み)を行うためには、
ディレクトリ 「book_picture」は「ユーザー apache」が書き込むことができるようにしなければなりません。
(Windows の場合、デフォルトのパーミッション設定では書き込めるようになっているため、問題になりませんが、
UNIX系OSでは、デフォルトではディレクトリの所有者以外の権限ではファイルの書き込みが出来なくなっているのが普通です)
方法は2択
・ディレクトリ「book_picture」の所有者を apache にする
・ディレクトリ「book_picture」のパーミッションを777にする
このどちらかの設定をすればいけます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- PHP ファイルアップロードの上限を増やす 7 2023/06/23 12:50
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
WSHやVBSについて
-
JAVA内で複数のファイルを削除...
-
PHPのWarningとは?
-
PHPの実行結果画面について
-
iアプリは、jarファイルをダウ...
-
上位ディレクトリ名(フォルダ...
-
O/Rマッパーの選定
-
CFileDialogの最初のディレクト...
-
C♯での特殊ディレクトリ取得に...
-
renameでのPermission deniedエ...
-
PHPでディレクトリ名のみ表示す...
-
rmdirでフォルダが消せません
-
includeが出来ない訳とは?
-
LinuxからNASを使用したときの...
-
図に示す階層構造で,現在のデ...
-
makefile でファイルをコピーす...
-
ローカルサーバーでパーミッシ...
-
実行ファイルの識別方法?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
makefile でファイルをコピーす...
-
CFileDialogの最初のディレクト...
-
FTPでのファイルとディレクトリ...
-
visualstudioでc#のdllができない
-
VB.NET 最下位のディレクトリ名...
-
MkDir関数
-
現在位置より2つ上のディレク...
-
DLL のロードの順序
-
rmdirでフォルダが消せません
-
Subversionで、ファイルをリネ...
-
絶対パス?絶対アドレス?意味...
-
define でのルートディレクト...
-
Visual C++ 2005 Express Editi...
-
ツリーメニューを縮小させたい
-
JAVA内で複数のファイルを削除...
-
fopenでファイルが開かない場合...
-
Smarty includeでテンプレート...
おすすめ情報