2016-09-24 21 views
1

Ok私はmysql DBから値を引き出すカスタムPHP関数を書いていましたが、もともとこの関数はクラスにあって、それをクラスとして呼び出そうとしていました。/var/log/httpd/error_logにエラーが表示されていません。また、$ホスト変数をコメントアウトすると、私はこのファイルをローカルに移動してトラブルシューティングを行います。 getSetting関数スクリプトはちょうど私がsshログインメソッドに情報を提供しないと予想されるログインに失敗したと言う。カスタムphp関数HTTP ERROR 500

<?php 
//testing for php 
//created by dylan kraklan do not use without permission 
//setenforce 0 on host machine is required 
//header('Content-type: text/plain'); 
error_reporting('E_ALL | E_STRICT'); 
ini_set('display_errors', 'On'); 

include('Net/SSH2.php'); 
include('general.php'); 
include('config.php'); 

$database =Database::getInstance(); 
$db = $database->getConnection(); 

$gen = new Gen(); 

function getSetting($setting) { 
$set_sql = "SELECT value FROM settings WHERE setting='$setting'"; 
$set_query =$db->query($set_sql); 
$value_a = $set_query->fetch_assoc(); 
$value =$value_a['value']; 

return $value; 

} 


$host = getSetting('remote_host'); 
//$user = $gen->getSetting('remote_user'); 
//$pass = $gen->getSetting('remote_pass'); 

//echo $host.$user.$pass; 

$ssh = new Net_SSH2($host); 

if(!$ssh->login($user, $pass)) { 
    exit('Login Failed'); 
} 


print_r($ssh->exec('pwd')); 
print_r($ssh->exec('ls -la')); 


?> 

私はphp.iniで見たすべてのエラーログoptiosnを有効にしているし、私もphp_error.logするエラーのログを指定し、私はこのファイルはphp.iniのと同じディレクトリ(/ etcにあるだろうと仮定)はそれが生成されるのを見なかった。それから、私は/var/log/httpd/php_error.logに切り替えようとしましたが、まだ生成されていません。

EDIT:[OK]をので、私は、PHP's white screen of death

を私にエラーが表示されますいくつかのコードを発見した今、エラーが

E_NOTICE Error in file �test.php� at line 21: Undefined variable: db Fatal error: Call to a member function query() on a non-object in /var/www/html/sync/lib/test.php on line 21 E_ERROR Error in file �test.php� at line 21: Call to a member function query() on a non-object

である21行目は、私はよく分からない

$set_query =$db->query($set_sql); 

です私のmysqlステートメントで何が間違っているが、問題を引き起こしているようだ。

+1

[PHPの死の白い画面]の可能な複製(http://stackoverflow.com/questions/1475297/phps-white-screen-of-death) – Sherif

答えて

0

最終的にエラーが表示されるようになったのは、mysqliインスタンスが関数で利用できない$ db変数によって引き起こされたため、関数内に新しいインスタンスを作成する必要がありました。