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

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

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

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

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

Docker

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

Q&A

解決済

2回答

2117閲覧

Dcoker環境でSymfony2のサンプルプログラムを動作させる

IST

総合スコア14

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

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

Docker

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

0グッド

0クリップ

投稿2017/11/18 07:02

###前提・実現したいこと

Docker環境でSymfony2のサンプルプログラムを動作させる

ここに質問したいことを詳細に書いてください
基本からしっかり学ぶSymfony2入門という書籍のサンプルプログラムを元に学習をしています。

ソースはサンプルプログラムのままで進めています。
公開されているソースは以下のURLです。
https://github.com/hidenorigoto/symfony2-book

書籍の中ではビルトインサーバで動作させることを前提としています。
しかし、使用しているMacのPHPが71であるため、Docker環境で動作させたいと考えています。

使用しているDocker imageはphp:5.6-apache-jessieです。

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

URIからコントローラにアクセスをする際にエラーになる

* http://localhost:8080/アプリケーション名/web/とすればルートには接続できる * http://localhost:8080/アプリケーション名/web/concert/とするとエラーになる

以下がエラーメッセージです。

Not Found The requested URL /web/concert/ was not found on this server. Apache/2.4.10 (Debian) Server at localhost Port 8080

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

php

1namespace AppBundle\Controller; 2 3use Symfony\Bundle\FrameworkBundle\Controller\Controller; 4use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 5 6class ConcertController extends Controller 7{ 8 /** 9 * @Route ("/concert/") 10 */ 11 public function indexAction() 12 {

Apacheで動作をさせる際には、どのようなアノテーションルーティングにすべきなのでしょうか。

###試したこと

アノテーションによるルーティングの変更

/** * @Route ("/web/concert/") */ public function indexAction() {

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

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

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

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

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

guest

回答2

0

ベストアンサー

アプリケーション(Symfony)の問題ではなさそうです。
公式ドキュメントに沿って、Webサーバー(Apache)の設定を見直してください。

投稿2017/11/18 08:31

xenbeat

総合スコア4258

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

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

IST

2017/11/18 08:51

頂いたURLを参照してみたのですが、 レンタルサーバなどで自分の日記アプリなどを公開する際に、 もともと配置してあるトップページなどに影響を与えずに設定をするにはどのようにしたらいいのかがわかっておりません。 想定している構成は以下の通りです。 /var/www/htdocs/他のアプリケーション /var/www/htdocs/Symfonyアプリケーション Symfonyアプリにはhttp://アプリ名/コントローラ名/のように接続をしたいのですが、 ホーム(/)以外は404となってしまいます。 こうした構成を実現するアノテーションの書き方はないでしょうか。 またはApacheで設定をするとしたらどのように記述をすべきかご教授いただけないでしょうか。
xenbeat

2017/11/18 09:03

レンタルサーバで動かすのであればApacheのconfは直接いじれないと思うので、レンタルサーバから提供されるUIから設定することになると思います。 このあたりの手順はサービスごとに異なるのでサービスのサポート窓口に問い合わせてください。 あとサービスによってはそもそもマルチドメインに対応していないものもありますのご確認ください。
IST

2017/11/18 09:10

迅速な返信に感謝しております。 レンタルサーバは『ロリポップ』を予定しておりますが、 まずは、Docker環境でレンタルサーバを想定して上記の構成で動かしてみたいと思っています。 Apacheの設定についても知識が乏しく、コントローラのメソッドにアクセスできません。。 よろしければ、どのような設定を行うのかご教授いただけないでしょうか。。 (有難い回答を受け取り切る知識・技能に達していない点、誠に申し訳ありません。)
xenbeat

2017/11/18 09:38

以下Symfonyのドキュメントにも記載されてますがApacheのバーチャルホストという機能を使えば良いです。 https://symfony.com/doc/2.8/setup/web_server_configuration.html#apache-with-mod-php-php-cgi ちなみに「http://localhost:8080/アプリケーション名/web/とすればルートには接続できる」とのことですが以下URLの「Welcome to Symfony..」は見えているのでしょうか? http://symfony.com/doc/2.8/setup.html#running-the-symfony-application
IST

2017/11/18 10:34

見えておりません。。私の環境ではDockerで ``` ports: - 8080:80 ``` を指定しているため、アクセスする際には、 http://localhost:8080/ となるのですが、タブに403 Forbiddenと表示されます。 (ドキュメントルートにindex.htlmなどを置いていないためと思われます) http://localhost:8080/Symfonyのディレクトリのパス/公開フォルダのパス/ つまり、 http://localhost:8080/アプリケーション名/web/ とすることで、トップページは表示されます。 トップページのクラスとメソッドは以下URLのものです https://github.com/hidenorigoto/symfony2-book/blob/master/src/AppBundle/Controller/ToppageController.php
xenbeat

2017/11/18 10:50

apacheのドキュメントルートはどうなってますか? あとアプリケーション名/app/logには何も出てないですよね?
IST

2017/11/18 10:51

連投で申し訳ありません。 php:5.6-apache-jessie を使用している場合、 頂いたURLの Apache with mod_php/PHP-CGI はどのファイルに追記すれば良いのでしょうか,,, Dockerコンテナの中に、Apacheの設定ファイルが複数あります。。 root@d2f847cfce:/var/www# ls /etc/apache2/ apache2.conf conf-available/ conf-enabled/ envvars magic mods-available/ mods-enabled/ ports.conf sites-available/ sites-enabled/
IST

2017/11/18 10:54

apacheのドキュメントルートは、 /var/www/html/ です,,,
xenbeat

2017/11/18 11:04 編集

symfonyドキュメントでドキュメントルートが「DocumentRoot /var/www/project/web」になっていることにお気づきでしょうか。 projectは質問者さんのいう「アプリケーション名」に読み替えてください。
IST

2017/11/18 11:46 編集

/var/www/html/project/webをドキュメントルートにするため、以下を実行しました。 symfony.confの作成 vim /etc/apache2/sites-available/symfony.conf 以下を書き込み保存 (自分のアプリケーションのディレクトリ名もprojectにしました) ``` <VirtualHost *:80> ServerName domain.tld ServerAlias www.domain.tld DocumentRoot /var/www/html/project/web <Directory /var/www/html/project/web> AllowOverride All Order Allow,Deny Allow from All </Directory> # uncomment the following lines if you install assets as symlinks # or run into problems when compiling LESS/Sass/CoffeeScript assets # <Directory /var/www/html/project> # Options FollowSymlinks # </Directory> ErrorLog /var/log/apache2/project_error.log CustomLog /var/log/apache2/project_access.log combined </VirtualHost> ``` 設定の読み込み a2ensite symfony localhost:8080に接続 403でYou don't have permission to access / on this server.と表示されてしまいました。。
xenbeat

2017/11/18 12:28 編集

ServerNameにlocalhostを設定してapacheを再起動してみてください。伝え忘れました、すみません。 あと「ServerAlias www.domain.tld」は不要です。
IST

2017/11/18 12:39

できました,,, 最後までお付き合いしていただき、いくら述べてもお礼を言い足りないです。 誠にありがとうございました。
xenbeat

2017/11/18 12:52 編集

良かったです! apacheのことは嫌いでも、symfonyは嫌いにならないでください!w ってのは冗談ですが、phpフレームワークの王道「symfony」を頑張って勉強されてください!
IST

2017/11/18 13:09

涙が出ました。。素晴らしい方ですね,,,本当に。。 ちなみにこれをレンタルサーバ『ロリポップ』などに置くとしたら、 今はApacheの設定で、全てのいきなりSymfonyを見に行ってしまう気がしています。 複数のアプリケーションが共存する予定のレンタルサーバではどのようにすべきなのでしょうか
xenbeat

2017/11/18 13:20

いえいえ、symfonyを使う人が増えて嬉しい限りです。 ロリポップは使ったことないので、設定方法等はお答えできかねます。お役手に立てず申し訳ありません。 以下ページを拝見するとマルチドメインに対応しているようなのでこちらの設定をすればいけるはずです。 https://lolipop.jp/manual/user/multi-domain/ こちらの設定に関する問い合わせはteratailで質問するよりもロリポップのサポート窓口にお問い合わせされた方が解決が早いと思います。 https://lolipop.jp/support/
guest

0

/webは不要です。

php

1 * @Route ("/concert/")

投稿2017/11/18 07:26

ooeok

総合スコア469

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

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

IST

2017/11/18 07:30

回答ありがとうございます。ですが、元々の、 ``` @Route ("/concert/") ``` で、動作をさせようとすると、ブラウザ上で ``` Not Found The requested URL /web/concert/ was not found on this server. Apache/2.4.10 (Debian) Server at localhost Port 8080 ``` と表示され、アクションが参照されません。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問