1

私はCakephpで動作するcrontabを取得しようとしています(現在、共有Dreamhostサーバーで実行しています)。

に従ってシェルをセットアップしました。これは、cronの実行または手動での実行のいずれかを介して正常に動作します(両方ともシェルファイルを介して、たとえば:

cron.sh
#########
cd /pathToApp/app/Console
/usr/local/bin/php cake.php updater list_reports

updater は私のシェルであり、list_reports はそのメソッドです。

この問題は、シェルでデータベースにアクセスしようとすると発生します (「シェルでモデルを使用する」、同じリンク)。

エラーメッセージ:

エラー: データベース接続 "SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)" が見つからないか、作成できませんでした。

私の DB セットアップ (サイトは http で正常に動作します。何かを追加する必要がありunix_socketますか?

array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'mysql.mydomain.net',
        'port' => '3306',
        'login' => '*******',
        'password' => '*******',
        'database' => '*******',
        'prefix' => '',
    );

私が試したこと:

  • へのシンボリックリンクの作成/var/run/mysqld/mysqld.sock- 許可が拒否されました
  • 共有ホスティングでもこれを行うことはできますか?
  • 上記のデータベース設定にさまざまな変更を試みましたが、うまくいきませんでした。
  • 同様の問題は、localhost を 127.0.0.1 に置き換えることで解決されましたが、ローカルではなく共有ホストを使用しています。
4

1 に答える 1

3

それは公式です!私はデブです!

この問題が Cakephp や Mysql のいずれかによって引き起こされたのではなく、自分で行って忘れてしまったことが原因であることが確認できます....

開発環境、テスト環境、ステージング環境などにいるかどうかを自動的に検出するために、database.php に小さなスイッチがありました。デフォルトはローカルに設定されていましたが、bash スクリプトが $_SERVER['SERVER_NAME'] を取得しなかったためです。スイッチに使用していたもので、デフォルトでローカル データベースに設定されていました。

これを解明して元に戻す手がかりを見つけてくれたifunkに感謝します!

:)

于 2012-07-21T13:07:04.307 に答える