3

私はウェブサイトを持っており、mysql データベースに接続し、/home/user/public_html/inc/instance-config.php にあるファイルで定義されている他のパスワードを使用しています。

セキュリティのために、パスワードを /public_html ディレクトリの上に保持したいと考えています。基本的に、 /home/user/secrets.phpというファイルを作成しました。メインの構成ファイルはこのファイルを必要とし、そこからパスワードを取得する必要があります。しかし、そうではありません。

私のファイル/home/user/public_html/inc/instance-config.phpのこのコードはエラーを出しません:

$secrets = str_replace ( 'public_html', '', getcwd() )  . 'secrets.php';

if ( file_exists( $secrets ) ){
    include $secrets ;
}

**// confirm that the values where imported**
moo( 'The secret value is ' . $secret_value );

$config['db']['type'] = 'mysql';
$config['db']['server'] = 'localhost';
$config['db']['database'] = 'xxxxxxx';
$config['db']['user'] = 'xxxxxxx';

$config['db']['password'] = 'xxxxxxx';
$config['cookies']['mod'] = 'xxxxxxxx';
$config['cookies']['salt'] = 'xxxxxx';

私のファイルsecrets.phpには、構成とパスワードを含む最後の 7 行と、基本的にファイルが正しく含まれていることを確認するために使用する「 secret_value 」という変数があります。これを行うと、「moo」関数がログ ファイルに出力するため、次のような結果が得られます。

03/28/2013 07:36:52 am -- The secret value is Everything OK!
03/28/2013 07:36:55 am -- The secret value is Everything OK!
03/28/2013 07:36:55 am -- The secret value is Everything OK!
03/28/2013 06:36:56 am -- The secret value is Everything OK!
03/28/2013 07:36:57 am -- The secret value is Everything OK!
03/28/2013 06:36:57 am -- Rebuilt page 1 from ALL
03/28/2013 07:36:57 am -- The secret value is Everything OK!
03/28/2013 06:36:58 am -- The secret value is Everything OK!
03/28/2013 06:36:58 am -- The secret value is Everything OK!
03/28/2013 06:36:58 am -- The secret value is Everything OK!
03/28/2013 06:36:58 am -- The secret value is Everything OK!
03/28/2013 06:36:58 am -- The secret value is Everything OK!
03/28/2013 06:36:58 am -- The secret value is Everything OK!
03/28/2013 06:36:58 am -- The secret value is Everything OK!
03/28/2013 06:36:58 am -- The secret value is Everything OK!
03/28/2013 06:36:58 am -- The secret value is Everything OK!
03/28/2013 06:36:59 am -- The secret value is Everything OK!
03/28/2013 06:36:59 am -- The secret value is Everything OK!
03/28/2013 06:36:59 am -- The secret value is Everything OK!
03/28/2013 06:36:59 am -- The secret value is Everything OK!
03/28/2013 06:36:59 am -- The secret value is Everything OK!
03/28/2013 06:36:59 am -- The secret value is Everything OK!
03/28/2013 06:36:59 am -- The secret value is Everything OK!
03/28/2013 06:36:59 am -- The secret value is Everything OK!
03/28/2013 06:36:59 am -- The secret value is Everything OK!
03/28/2013 07:36:59 am -- The secret value is Everything OK!

したがって、ファイルが正しく要求されているようです。これらの行を instance-config ファイルから削除して、secret.php ファイルにのみ表示されるようにしました。しかし、最初に、コードを分岐して、ファイルの存在を確認しようとしました。ファイルが存在する場合は、そこから構成変数を取得する必要があります。これは私のコードです:

    moo(':: GET READY');
if ( file_exists( $secrets ) ){
    require $secrets ;
    if ( isset ($secret_value) )
        moo( 'The secret value is ' . $secret_value);
    else
        moo('Required but could not find the secret value');
}else{
    $config['db']['type'] = 'mysql';
    $config['db']['server'] = 'localhost';
    $config['db']['database'] = 'xxxxxx';
    $config['db']['user'] = 'xxxxxxxx';
    $config['db']['password'] = 'xxxxxxxxxx';
    $config['cookies']['mod'] = 'xxxxxxxxxxxxx';
    $config['cookies']['salt'] = 'xxxxxxxxx';
    moo( 'The secret value was not obtained');
}

そうそう、次のような出力行のリストを取得します。

03/28/2013 07:41:07 am -- :: GET READY ::
03/28/2013 07:41:07 am -- The secret value is Everything OK!

そして、すべての「GET READY」の後には、特派員の「Everything is OK!」が続きます。ログファイルのどこにも、「秘密の値が取得されませんでした」または「必要ですが見つかりませんでした...」という行がありません。

ただし:

ブラウザーにエラー 500メッセージが表示され、ページの読み込みが停止します。どうして、どうして?私はインターネットをチェックしましたが、ほとんどの人は、PHP がファイルを見つけられないことに問題がある可能性があると言っています。コードがファイルを見つけるのをできる限り支援しようとしました:

    // this adds /home/user to the include path, because secret.php
    // is located at /home/user/secret.php

if ( false == strpos( ini_get('include_path'), exec('echo ~') ) ) {
    ini_set('include_path', ini_get('include_path') . ':' . exec('echo ~') );
}

    // log errors to see if we can find the cause of the problem
ini_set('log_errors', 1);
ini_set('error_log', '/home/user/errors.log');
ini_set('error_reporting', E_ALL);

    // get absolute path of the file
$secrets = str_replace ( 'public_html', '', getcwd() )  . 'secreto.php';

何も機能せず、常に同じ 500 エラーが発生します。私に何ができる?私はほとんどすべてを試しました。すべての実行中に得た出力が示すように、ファイルは適切に配置されているようです。それでも、サーバーからエラー 500 ページが表示されます。

何か案は?

4

1 に答える 1

1

phpエラーが何であるかを見ましたか?エラー 500 は webserver/apache で、php に問題があると表示されます。問題自体は、webserver/apache error_log ファイルにある可能性が最も高いです。

または、コマンド ラインから php ファイルを実行すると (php -l somefile.php構文チェックを実行できます)、php が問題 (構文またはランタイム) を通知し、ホストしているのと同じディレクトリからファイルを実行しますphp somefile.php

于 2013-03-28T13:32:47.067 に答える