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

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

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

Symfony はPHPで記述されたWebアプリケーションフレームワークです。よく利用するコーディングをテンプレーティングするなど、Webアプリケーション開発の効率化を目的として設計されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

1回答

730閲覧

symfonyをレンタルサーバで動かすには

IST

総合スコア14

Symfony

Symfony はPHPで記述されたWebアプリケーションフレームワークです。よく利用するコーディングをテンプレーティングするなど、Webアプリケーション開発の効率化を目的として設計されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2017/11/25 17:11

Symfony × レンタルサーバに関する質問です。

ローカルで作成したsymfonyアプリケーションをレンタルサーバにアップロードしたところ動作しません。

DBと接続を行わない箇所は正常に動作するのですが、DBと接続するもののみ500エラーとなります。

レンタルサーバに問い合わせをしても技術的なことは答えられない様子で困っています。

何か特定の設定が必要なのでしょうか,,,

それともレンタルサーバでsymfonyを動作させることはできないのでしょうか。

よろしければ詳しい方いらしたらご教授願います。

[環境]
言語: PHP7.0
フレームワーク: symfony3.3
サーバ: ロリポップ(スタンダードプラン)

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

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

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

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

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

guest

回答1

0

ベストアンサー

DBと接続を行わない箇所は正常に動作するのですが、DBと接続するもののみ500エラー

DBサーバーの接続情報は正しく設定されてますでしょうか?設定ファイルを確認してください。
あと、ログに何も出力されてないでしょうか?こちらも合わせてご確認ください。

投稿2017/11/25 17:26

xenbeat

総合スコア4258

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

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

IST

2017/11/25 18:17

DBの接続情報は正しいかと思います。 例えば ``` php bin/console doctrine:schema:create ``` などのコマンドで、DBにテーブルが作成できることなどから、接続情報は正しいと認識しています。 アプリケーションログには ``` request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\ConnectionException: "An exception occured in driver: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)" at /vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 103 {"exception":"[object] ( ``` といった具合に、DB関係?のログがあるのを確認しました。 接続情報が正しいはずであるのに、なぜ動作しないのでしょうか,,,
xenbeat

2017/11/25 18:27

DBサーバーはご自身で構築されたものでしょうか?それともレンタルサーバーがサービスとして提供しているものでしょうか?後者の場合念のためサービス名を教えていただけますか。
IST

2017/11/25 18:31

後者です。 レンタルサーバ[ロリポップ]に付随するサービスのMySQLを使用しています。
xenbeat

2017/11/25 18:52 編集

>レンタルサーバ[ロリポップ]に付随するサービスのMySQLを使用しています。 そういうことでしたらブラックボックスになりますので サービス側から与えられた接続情報(権限)で接続できないとなると最終的にはサービス側に確認いただくことになります。 一応、考えられる原因は2点 1.parameters.yml(parameters.yml.distではないです)の内容が間違っている 2.権限のないユーザでアクセスしている(コマンドを実行しているユーザーとアプリから接続するユーザーが違う) 今一度、上記2点ご確認ください。
IST

2017/11/26 02:50

確認をしました。 1 については、bin/console doctrine:create:schemaなどでdb操作ができるため正しいとは思うのですが、他に確認をする方法はありますでしょうか,,, 2 権限の問題とはどのように確認をしたらよろしいのでしょうか,, 本日も調べてみていますが、接続ができません。。
xenbeat

2017/11/26 05:00

もう少し情報ください。 DBはWEBと別サーバ(localhostではない)ですよね? ちなみに/var/lib/mysql/mysql.sockのパーミッションって確認できますでしょうか?
IST

2017/11/26 05:12

今、/var/lib/mysql/mysql.sockのパーミッションを確認します!
IST

2017/11/26 05:14

確認したところ、/var配下にはrun/ と spool/ があるのみで、 /var/lib/mysql/mysql.sockのパーミッションを確認できませんでした。。 ``` $ ls -al /var/ run/ spool/ ```
xenbeat

2017/11/26 05:45

> /var/lib/mysql/mysql.sockのパーミッションを確認できませんでした そうでしょうね。 DBのホスト(parameters.ymlに指定しているdatabase_host)はlocalhostや127.0.0.1ではないですよね?
IST

2017/11/26 05:49

parameters.ymlに指定しているdatabase_hostはロリポップ!側から指定されているサーバです。 やはり、設定を使用して、コマンドから操作ができることと、同じ接続情報でsshからmysqlコンソールに入れることから設定している値は正しいように思えます。。
xenbeat

2017/11/26 05:56 編集

やはり別サーバということですね。 それではwebサーバから以下で接続できるか確認してください mysql -h [database_host] -u [database_user] -p [database_password]
IST

2017/11/26 06:02

こちらに関しては接続ができました。
IST

2017/11/26 06:03

やはり、アプリケーションからの接続のみ500エラーとなってしまいます。
IST

2017/11/26 06:12

いじっていないので、そのままになっておりますが一応添付します。 ``` doctrine: dbal: driver: pdo_mysql host: '%database_host%' port: '%database_port%' dbname: '%database_name%' user: '%database_user%' password: '%database_password%' charset: UTF8 # if using pdo_sqlite as your database driver: # 1. add the path in parameters.yml # e.g. database_path: '%kernel.project_dir%/var/data/data.sqlite' # 2. Uncomment database_path in parameters.yml.dist # 3. Uncomment next line: #path: '%database_path%' ``` あ、あなたは以前、別の質問でお答えいただけた方ですね!?
IST

2017/11/26 06:35

できました!!!!!今詳細をお伝えします!
IST

2017/11/26 06:38

venderディレクトリを削除して、scp転送をし、 レンタルサーバ上でcomposer installをして、 その際に対話方式のDB接続情報の入力に回答しながら設定をしていったら アプリケーションからDBに接続できるようになりました。 まだ、詳細はみていないのですが、一応DBエラーが消えるようになりました。 maverixzさんが質問に応対してくださらなければ諦めていました。 誠にありがとうございます。
xenbeat

2017/11/26 14:59

うーんなんか腑に落ちない感じですが、、、 ともあれ問題解決できて良かったです!
IST

2017/11/27 13:02

maverixzさんに腑に落ちていただきたいので、私で調べられることであればなんでも答えます。 (maverixzに対して『答えます』などと恐れ多いですが,,,) 前回の件の感謝、そして今回の件の感謝を含め、何かお役に立てれば幸せです。
xenbeat

2017/11/28 05:22

おーありがとうございます! それでは、レンタルサーバーがゆえインフラ側の調査は難しいかと思いますので、アプリの観点もう少し。 今回のデプロイ手順をなるべく詳細に教えていただけますでしょうか。
IST

2017/11/28 14:25

今回のデプロイ手順は ・Macのローカル環境でsymfony内部サーバで実装を進めておりました。(問題なく進む) ・Docker環境で動かすよう変更(ルーティングでつまづくもののApacheの設定により解消) ・レンタルサーバに移行(DBに接続できずにつまづく) 最後のレンタルサーバの件ですが、設定が正しく記述してあったにも関わらず、DB接続がうまく行きませんでした。 レンタルサーバ上でcomposer でsymfonyをインストールし、対話式でDBの設定を行い、ソースを転送したところ動くようになりました。
xenbeat

2017/11/28 14:57

>・レンタルサーバに移行 ここをもう少し詳細にお聞かせください。 FTP、SCPでアップロードしたのか、デプロイ先でgit pullしたのか。 デプロイされたファイル群はなにか(gitignoreに含まれているファイルも含まれていたのか)。 そしてその後、当該質問に至るまでどんな作業を行ったか。
IST

2017/11/28 15:18

失敗時には、ローカルでレンタルサーバ用の設定を行い、FTPで丸ごと転送していました。 成功時はgit pull です。 git pushした際には、symfonyのデフォルトのgitignoeに記載されていたファイルはアップロードされておらず、git pull からのcomposer installです。 その後、とりわけ何も行なっていないのですが、DBに接続され、500エラーも起こらなくなりました。 その他何か必要な情報があればぜひ何でもどうぞ!
xenbeat

2017/11/28 16:08

なるほど。キャッシュが影響してそうですね。 >FTPで丸ごと転送していました cacheディレクトリは除外しました。
IST

2017/11/29 12:26

ありえます。インストールし直したらすんなりいきました!
xenbeat

2017/12/01 15:26

すみません質問になってなかったですね。。。 cacheディレクトリもFTPで転送されたということですね? そうであれば、CLIではうまくいってHTTPでは失敗したということ事実からも腹落ちします。 composer installするとcache clearも自動的にされる(https://github.com/symfony/symfony-standard/blob/3.3/composer.json#L37)のでvenderディレクトリ配下のライブラリが何か悪さをしていたわけではなく、cacheディレクトリのキャッシュが悪さをしていたと考えます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問