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

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

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

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PHP

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

VMware

VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

解決済

dockerコンテナ内からホストに権限を与えることはできるか

MycoChild
MycoChild

総合スコア36

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PHP

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

VMware

VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

2回答

0リアクション

0クリップ

42057閲覧

投稿2021/04/03 12:33

編集2021/04/03 12:54

docker初心者です;;
ホストOS Macで、VMware fusionのゲストOS Ubuntu環境にさらにdockerコンテナのLAMP環境で独習PHPという本のソースを動かしてます。以下のプログラムで、

PHP

<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>アップロード処理</title> </head> <body> <form method="POST" action="file2.php" enctype="multipart/form-data"> <label for="upfile">ファイルのパス:</label> <input type="hidden" name="max_file_size" value="1000000" /> <input id="upfile" type="file" name="upfile" size="40" /> <input type="submit" value="アップロード" /> </form> </body> </html>

画像をアップロードするという課題があります。

PHP

<?php $ext = pathinfo($_FILES['upfile']['name']); $perm = ['gif', 'jpg', 'jpeg', 'png']; if ($_FILES['upfile']['error'] !== UPLOAD_ERR_OK) { $msg = [ UPLOAD_ERR_INI_SIZE => 'php.iniのupload_max_filesize制限を越えています。', UPLOAD_ERR_FORM_SIZE => 'HTMLのMAX_FILE_SIZE 制限を越えています。', UPLOAD_ERR_PARTIAL => 'ファイルが一部しかアップロードされていません。', UPLOAD_ERR_NO_FILE => 'ファイルはアップロードされませんでした。', UPLOAD_ERR_NO_TMP_DIR => '一時保存フォルダが存在しません。', UPLOAD_ERR_CANT_WRITE => 'ディスクへの書き込みに失敗しました。', UPLOAD_ERR_EXTENSION => '拡張モジュールによってアップロードが中断されました。' ]; $err_msg = $msg[$_FILES['upfile']['error']]; } elseif (!in_array(strtolower($ext['extension']), $perm)) { $err_msg = '画像以外のファイルはアップロードできません。'; } elseif (!@getimagesize($_FILES['upfile']['tmp_name'])) { $err_msg = 'ファイルの内容が画像ではありません。'; } else { $src = $_FILES['upfile']['tmp_name']; $dest = mb_convert_encoding($_FILES['upfile']['name'], 'SJIS-WIN', 'UTF-8'); if (!move_uploaded_file($src, 'doc/'.$dest)) { $err_msg = 'アップロード処理に失敗しました。'; } } if (isset($err_msg)) { die('<div style="color:Red;">'.$err_msg.'</div>'); } header('Location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/file1.php');

Ubuntuのブラウザで画像を選択するセレクトボックスを押すと、当然ながらUbuntuのファイルウィンドウが開きます。画像をアップロードすると、Ubuntuに対して権限がないので?、アップロード処理に失敗しました。となります。
コンテナからホストであるUbuntuに対してchmod 777するとか、もしくはファイルウィンドウからコンテナ内の画像をアップロードするとかできませんか。
Dockerfileで何か指定するとか?
(頓珍漢なこと言っているかも)
駄文すみません。

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

hoshi-takanori

2021/04/03 22:00

docker run -v でホスト側のディレクトリを doc にマウントしてるのに書き込めないということでしょうか? また、ファイル名をわざわざ Shift-JIS にする必要はあるのでしょうか?

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PHP

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

VMware

VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです