いつもお世話になっております。
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ランキング
-
CFileDialogの最初のディレクト...
-
FTPコマンドでディレクトリごと...
-
現在位置より2つ上のディレク...
-
VB2008でFTPでのディ...
-
Tcl/Tkの超初歩的な質問です。
-
fopenでファイルが開かない場合...
-
Subversionのリポジトリの削除
-
更新日時でソートしてファイル...
-
visualstudioでc#のdllができない
-
MediaWiki「Can't write config...
-
SHGetSpecialFolderLocation
-
unlink「許可がありません」と...
-
rmdirでフォルダが消せません
-
PHP+PostgreSQLで画像処理につ...
-
バッチを用いたフォルダの自動移動
-
DLL のロードの順序
-
makefile でファイルをコピーす...
-
readdir()関数について教えて下...
-
VB.NET 最下位のディレクトリ名...
-
preg_match関数で正規表現の複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
fopenでファイルが開かない場合...
-
visualstudioでc#のdllができない
-
Subversionのリポジトリの削除
-
絶対パス?絶対アドレス?意味...
-
makefile でファイルをコピーす...
-
ファイル選択ダイアログで選択...
-
rmdirでフォルダが消せません
-
ファイルアップロードに関して...
-
【PHP】declare命令で”Fatal er...
-
[ ディレクトリ '.' は書き込み...
-
aspのページが表示できません
-
VB.NET 最下位のディレクトリ名...
-
glob関数で日本語文字が取得で...
-
図に示す階層構造で,現在のデ...
-
includeが出来ない訳とは?
-
環境変数をMakefile内で有効に...
おすすめ情報