2011-01-17 36 views
6

Khi tôi cố gắng để sử dụng lớp vấn đề tôi nhận được lỗi sau:Fatal error: Class 'cơ sở dữ liệu' không tìm thấy - PHP

Fatal error: Class 'database' not found in path/problem.php on line 25 

Tôi không hiểu tại sao tôi đã nhận lỗi này, ở đầu problem.php Tôi yêu cầu database.php. Điều gì đang xảy ra?

problem.php

<?php 
require("common.php"); 
require("database.php"); 
... 
?> 

database.php

<?php 
class database 
{ 
    ... 
} 
?> 
+1

Bạn có thể cung cấp mã chính xác? –

+0

Có phải tệp problem.php và database.php trong cùng một thư mục không? –

+0

Ciprian L .: Đó là mã chính xác. Ý anh là gì? Eric: Vâng. – SamB

Trả lời

11

đây có thể là sự cố đường dẫn bao gồm. Để khắc phục điều đó, trong tập tin problem.php bạn

làm điều này:

echo realpath (dirname(__FILE__)); 

rằng sẽ ra cái gì đó như

/var/www/html/myfilepath/

tập tin của bạn , problem.php sẽ nằm trong thư mục đó.

bây giờ, nếu database.php cũng nằm trong thư mục đó, bạn có thể làm điều này

$filepath = realpath (dirname(__FILE__)); 

require_once($filepath."/database.php"); 

nếu nó là một nơi nào khác bạn có thể làm

require_once($filepath."/../../path/to/somewhere/else/database.php"); 
+0

/var/www/html/spring-php/controllers/../../model/User.php Đây là những gì tôi nhận được. Hãy giúp tôi –

1

bạn bao gồm các tập tin?

include "database.php"; // or the path relative to database.php 
class problem 
{ 

nevermind. Có thể: bao gồm (bắt buộc) không mở tệp.

+0

Đây là dòng thứ ba của problem.php – SamB

0

Bạn có thể thêm

echo "OK"; 

đến chân của database.php và kiểm tra lại?

Vì vậy, chúng ta có thể hiểu, database.php thực sự được đưa vào trang.

+0

Nó không hiển thị lên ... Tại sao lại như vậy? database.php nằm trong cùng thư mục. – SamB

+0

OK. Bây giờ bạn có thể kiểm tra trực tiếp database.php? Khi bạn nhìn vào database.php, nó hiển thị OK? Hoặc chỉ là trang trống? Nếu trang trống được trả lại, bạn tạo lỗi cú pháp trên database.php. – Eray

-1

cho hậu thế: chỉ cần làm rõ nguyên nhân điều này không thành công là bạn đang bao gồm từ quan điểm của cuộc gọi ORIGINAL cho phép tôi giải thích cho ví dụ:

myfolder/index.php 
<?php 
include ("classes/problem.php"); 
... 
?> 

điều này có nghĩa là vào thời điểm bạn nhận được "problem.php" và đề cập đến "database.php", bạn đang ở "myfolder/" đến mức mà PHPland không quan tâm "myfolder/classes" (bạn cần phải hiểu rõ điều này) . Cách đúng đắn để làm điều đó đơn giản là sử dụng đường dẫn tuyệt đối cho mọi thứ qua một trang liên tục trên trang 1. Tôi biết đó là điều mà nhiều người nói là khủng khiếp - nhưng trong tất cả sự trung thực đó là những gì "không gian tên" có nghĩa vụ phải sửa nhưng Tôi vẫn sẽ sử dụng hằng số (IMHO không gian tên là khủng khiếp trong php, và nhiều hơn để làm với tự aggrandizement/mã nguồn mở quảng cáo/quyền tác giả tự hào chương trình nghị sự mà bất cứ điều gì cụ thể hoặc hữu ích)

Các vấn đề liên quan