2012-10-18 66 views
-2

工作,如果我試圖在我的瀏覽器打開這個簡單的文件:require_once不PHP

<?php 

require_once 'classes/settings.php'; 

class Mysql { 

    private $conn; 

    function __construct() { 

     $this->conn = new mysqli (DB_SERVER,DB_USER,DB_PASSWORD,DB_MEMBER) or die('There was a problem connecting to the database.'); 
     if ($this->conn->connect_errno) { 
echo "Failed to connect to MySQL: (" . $this->conn->connect_errno . ") " . $this->conn->connect_error; 
} 
//echo $mysqli->host_info . "\n"; 
    } 

    function verify_Username_and_Pass($un, $pwd) { 

     $query = "SELECT * 
     FROM users 
     WHERE username = ? AND password = ? 
     LIMIT 1"; 

     if($stmt = $this->conn->prepare($query)) { 

      $stmt->bind_param('ss',$un,$pwd); 
      $stmt->execute(); 

      if($stmt->fetch()) {  
       $stmt->close(); 
       return true; 
      } 
     } 
    } 
} 
?> 

我收到這樣的警告錯誤:

Warning: require_once(classes/settings.php): failed to open stream: No such file or 
directory in /var/www/classes/Mysql.php on line 3 Fatal error: require_once(): Failed 
opening required 'classes/settings.php' (include_path='.:/usr/share/php:/usr/share/pear') 
in /var/www/classes/Mysql.php on line 3 

我不明白爲什麼,在文件setting.php在該文件夾中,那麼問題是什麼?


編輯

如果我這樣做,則這個與另一個文件,例如這樣的:

<?php 
require_once 'classes/settings.php'; 


$host = "localhost"; 
$user = "root"; 
$pass = "pass"; 

$databaseName = "membership"; 
$tableName = "users"; 

//-------------------------------------------------------------------------- 
// 1) Connect to mysql database 
//-------------------------------------------------------------------------- 

$con = mysql_connect($host,$user,$pass); 
$dbs = mysql_select_db($databaseName, $con); 

//-------------------------------------------------------------------------- 
// 2) Query database for data 
//-------------------------------------------------------------------------- 
$result = mysql_query("SELECT * FROM $tableName");   //query 
$array = mysql_fetch_row($result);       //fetch result  

//-------------------------------------------------------------------------- 
// 3) echo result as json 
//-------------------------------------------------------------------------- 
echo json_encode($array); 

?> 

這樣一來,它的工作原理沒有問題,我不明白爲什麼該文件和路徑是正確的,因爲在這第二部分代碼都工作。

+2

你不應該'require_once'只是 '的settings.php' 在這裏嗎?或者'../classes/settings.php',如果你更多,那麼勤勞。 ) – raina77ow

+2

是文件名settings.php或setting.php?可能是問題 –

+0

的權限問題? –

回答

4

既然你是已經在類文件夾,你有兩個選擇

第一種選擇是使用相對路徑

require_once 'settings.php';

第二個選項是使用絕對路徑

require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/settings.php'

+0

謝謝你是對的! – Piero

5

您的腳本var/www/classes/Mysql.php已經在的classes目錄下。您包含的文件位於相同的目錄中。取出classes/和使用:

require_once 'settings.php'; 
+0

@Piero如果這個答案解決了你的問題,你應該接受它。 – Repox

0

嘗試使用$_SERVER['DOCUMENT_ROOT']

require_once ($_SERVER['DOCUMENT_ROOT'] . '/classes/settings.php');