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

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

ただいまの
回答率

91.36%

  • サーバ

    633questions

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

  • Symfony

    106questions

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

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

解決済

回答 1

投稿 2017/11/26 02:11

  • 評価
  • クリップ 0
  • VIEW 109

IST

score 2

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

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

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

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

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

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

投稿 2017/11/26 02:26

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/26 03: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関係?のログがあるのを確認しました。

    接続情報が正しいはずであるのに、なぜ動作しないのでしょうか,,,

    キャンセル

  • 2017/11/26 03:27

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

    キャンセル

  • 2017/11/26 03:31

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

    キャンセル

  • 2017/11/26 03:52 編集

    >レンタルサーバ[ロリポップ]に付随するサービスのMySQLを使用しています。
    そういうことでしたらブラックボックスになりますので
    サービス側から与えられた接続情報(権限)で接続できないとなると最終的にはサービス側に確認いただくことになります。

    一応、考えられる原因は2点
    1.parameters.yml(parameters.yml.distではないです)の内容が間違っている
    2.権限のないユーザでアクセスしている(コマンドを実行しているユーザーとアプリから接続するユーザーが違う)

    今一度、上記2点ご確認ください。

    キャンセル

  • 2017/11/26 11:50

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

    キャンセル

  • 2017/11/26 14:00

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

    キャンセル

  • 2017/11/26 14:12

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

    キャンセル

  • 2017/11/26 14:14

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

    ```
    $ ls -al /var/
    run/ spool/
    ```

    キャンセル

  • 2017/11/26 14:45

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

    キャンセル

  • 2017/11/26 14:49

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

    キャンセル

  • 2017/11/26 14:56 編集

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

    キャンセル

  • 2017/11/26 15:02

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

    キャンセル

  • 2017/11/26 15:03

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

    キャンセル

  • 2017/11/26 15:10

    以下の情報を追記いただいて良いですか?
    https://github.com/symfony/symfony-standard/blob/3.3/app/config/config.yml#L42

    キャンセル

  • 2017/11/26 15: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%'
    ```

    あ、あなたは以前、別の質問でお答えいただけた方ですね!?

    キャンセル

  • 2017/11/26 15:35

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

    キャンセル

  • 2017/11/26 15:38

    venderディレクトリを削除して、scp転送をし、
    レンタルサーバ上でcomposer installをして、
    その際に対話方式のDB接続情報の入力に回答しながら設定をしていったら
    アプリケーションからDBに接続できるようになりました。

    まだ、詳細はみていないのですが、一応DBエラーが消えるようになりました。

    maverixzさんが質問に応対してくださらなければ諦めていました。
    誠にありがとうございます。

    キャンセル

  • 2017/11/26 23:59

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

    キャンセル

  • 2017/11/27 22:02

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

    キャンセル

  • 2017/11/28 14:22

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

    キャンセル

  • 2017/11/28 23:25

    今回のデプロイ手順は
    ・Macのローカル環境でsymfony内部サーバで実装を進めておりました。(問題なく進む)
    ・Docker環境で動かすよう変更(ルーティングでつまづくもののApacheの設定により解消)
    ・レンタルサーバに移行(DBに接続できずにつまづく)

    最後のレンタルサーバの件ですが、設定が正しく記述してあったにも関わらず、DB接続がうまく行きませんでした。
    レンタルサーバ上でcomposer でsymfonyをインストールし、対話式でDBの設定を行い、ソースを転送したところ動くようになりました。

    キャンセル

  • 2017/11/28 23:57

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

    キャンセル

  • 2017/11/29 00:18

    失敗時には、ローカルでレンタルサーバ用の設定を行い、FTPで丸ごと転送していました。

    成功時はgit pull です。
    git pushした際には、symfonyのデフォルトのgitignoeに記載されていたファイルはアップロードされておらず、git pull からのcomposer installです。
    その後、とりわけ何も行なっていないのですが、DBに接続され、500エラーも起こらなくなりました。

    その他何か必要な情報があればぜひ何でもどうぞ!

    キャンセル

  • 2017/11/29 01:08

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

    キャンセル

  • 2017/11/29 21:26

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

    キャンセル

  • 2017/12/02 00:26

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

    キャンセル

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

ただいまの回答率

91.36%

関連した質問

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

  • サーバ

    633questions

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

  • Symfony

    106questions

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