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

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

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

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Docker

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

Q&A

1回答

2550閲覧

cakephp2でThe requested URL / was not found on this server.のエラーメッセージが出る

shin342

総合スコア22

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Docker

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

0グッド

0クリップ

投稿2020/08/16 07:17

前提・実現したいこと

dockerを使用してcakephp2の環境構築したいと思っています。
githubからcakephp2.xをダウンロードして使用しています。
全く解決の糸口が見つからないのでご教授いただけますと、幸いです。

発生している問題・エラーメッセージ

localhostに接続しようとすると、以下のエラーが出現します。

The requested URL / was not found on this server.

該当のソースコード

Dockerfile

FROM php:5.6-apache RUN apt-get update -yqq \ && apt-get install -yqq --no-install-recommends \ git \ zip \ unzip \ && rm -rf /var/lib/apt/lists # Enable PHP extensions RUN docker-php-ext-install pdo_mysql mysqli # Install composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer # Add cake and composer command to system path ENV PATH="${PATH}:/var/www/html/lib/Cake/Console" ENV PATH="${PATH}:/var/www/html/app/Vendor/bin" # COPY apache site.conf file COPY ./docker/apache/site.conf /etc/apache2/sites-available/000-default.conf # Copy the source code into /var/www/html/ inside the image COPY . . # Set default working directory WORKDIR ./app # Create tmp directory and make it writable by the web server RUN mkdir -p \ tmp/cache/models \ tmp/cache/persistent \ && chown -R :www-data \ tmp \ && chmod -R 770 \ tmp # Enable Apache modules and restart RUN a2enmod rewrite \ && service apache2 restart EXPOSE 80

site.conf

<VirtualHost *:80> DocumentRoot /var/www/html/app/webroot/ <Directory /var/www/html/app/webroot/> Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>

docker-compose.yml

version: "3" services: app: build: context: . dockerfile: docker/Dockerfile volumes: - .:/var/www/html ports: - 8111:80 environment: TZ: "Asia/Tokyo" depends_on: - db db: image: mysql:5 volumes: - db-data:/var/lib/mysql ports: - "3309:3306" # 3306ポートにするとローカルのMySQLと被るのでポートをずらす。 environment: MYSQL_DATABASE: cakephp_db MYSQL_ROOT_PASSWORD: root_password mailhog: image: mailhog/mailhog ports: - "8025:8025" - "1025:1025" volumes: db-data: external: false

database.php 一部掲載

public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'db', 'login' => 'root', 'password' => 'root_password', 'database' => 'cakephp_db', 'prefix' => '', 'encoding' => 'utf8', );

上記の内容でwindowsではうまくいくのですが、Macではエラーが出ました。
コンテナは全てupになっています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

エラーメッセージ The requested URL / was not found on this server. とは、記述された設定では /var/www/html/app/webroot/ に相当するドキュメントルート(のディレクトリ)が、コンテナ内に存在していない状態です。

この状態で、docker-compose logsコマンドを実行されると、おそらくログに 404(ファイルやディレクトリが存在しない)という HTTP 応答コードが出ているでしょう。

docker-compose.yml の記述を拝見すると、 ボリュームとして - .:/var/www/html とありますので、以下2つが確認ポイントになります。

  • docker-compose を実行したディレクトリの中に、 ./app/webroot/ ディレクトリがあるかどうか
  • ./app/webroot/ ディレクトリが有る場合、ブラウザから http://ホスト/app/webroot/ で表示できるかどうか

気になったのは、Apache の site.conf で DocumentRoot /var/www/html/app/webroot/ の記述がある点です。もし、 http://ホスト/ としてコンテンツを表示されたいのであれば、 docker-compose.ymlvolumes: の部分も - .:/var/www/html/app/webroot/ と書き換える必要があります。

投稿2021/04/10 09:51

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問