0

私はウェブサイトを持っています。それは次のように設定されています。

/public_html
    index.php
    common.php
    db.php
    /dev
      index.php
      common.php
      db.php

common.php繰り返し機能が含まれています。 Db.phpデータベース接続情報が含まれています。

common.phpまた、現在アクセスされているページが「開発」または「生産」にあることを判断する機能も含まれています。次に、この情報を使用して、それに応じてインクルード ファイルを呼び出します。

問題は、外部にある Php スクリプトを呼び出すいくつかの Cron ジョブのセットアップもあるということpublic_htmlです。しかし、そのパスを決定し、$_SERVER変数を使用し、URL の一部 (「/dev」という単語の存在など) に依存する関数が含まれているため、どのインクルードも機能しません。

では、サイトの他の部分で同じファイルを複製する可能性があるとしても、Cron ジョブ (データベース接続と機能) 用に別個のファイル セットを用意する方がよいでしょうか?

4

3 に答える 3

0

代わりに、を使用dirname(__FILE__)して common.php へのフル パスを取得し、それを基準にして、他のすべてのパスを決定することで、common.php からの相対パスを決定できます。私の経験では、これはサーバーや OS の連携を必要としないため、パスを決定する最もポータブルな方法です。

PHP 5.3 から、__DIR__代わりにdirname(__FILE__)現在のファイルが存在するディレクトリを取得するために使用できます。

于 2012-10-05T16:16:06.073 に答える
0

OS 環境変数を使用して、スクリプトの実行環境を設定できます。

クロンタブ:

MYAPP_ENV=production
# min hr dom mon dow command
  0   *  *   *   *   php /var/www/myapp/scripts/cron.php

あなたのスクリプト:

$environment = env('MYAPP_ENV');
于 2012-10-05T16:17:43.373 に答える
0

初心者向けの環境を決定する方法を変更します。サーバー (環境)変数は、1 つの適切なアプローチです。これらは、Apache を使用して vhost レベルで、または htaccess ファイルでも簡単に設定できます。

相対パスと chdir(dirname(__FILE__)); パスの問題の解決策に取り組むことができます。

あなたは問題を理解しているようで、ここであなたが汚いと感じるようなことをする許可を求めています:) 不必要に物事を複製しないでください. 代わりにコードをリファクタリングしてください。

于 2012-10-05T16:17:56.893 に答える