2011-01-17 24 views
6

Cuando intento utilizar la clase problema me sale el siguiente error:Fatal error: 'base de datos' Clase no encontrada - PHP

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

No entiendo por qué tengo este error, en la parte superior de problem.php Requiero database.php. ¿Que esta pasando?

problem.php

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

database.php

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

¿Puede proporcionar el código exacto? –

+0

¿Están problem.php y database.php en la misma carpeta? –

+0

Ciprian L .: Ese es el código exacto. ¿Qué quieres decir? Eric: Sí. – SamB

Respuesta

11

esto es probablemente un problema de ruta de inclusión. Con el fin de solucionarlo, en su archivo problem.php

hacer esto:

echo realpath (dirname(__FILE__)); 

que seria algo como

/var/www/html/myfilepath/

su archivo , problem.php estará en ese directorio.

ahora, si database.php también está en ese directorio, usted puede hacer esto

$filepath = realpath (dirname(__FILE__)); 

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

si está en otro lugar que puede hacer

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

/var/www/html/spring-php/controllers/../../model/User.php Esto es lo que obtengo. Por favor ayuda –

1

¿Incluye el archivo?

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

nevermind. Tal vez: el include (requerido) no está abriendo el archivo.

+0

Es la 3ª línea de problem.php – SamB

0

se puede añadir

echo "OK"; 

a pie de página del database.php y comprobar de nuevo?

Por lo tanto, podemos entender, database.php realmente se incluye en la página.

+0

No se muestra arriba ... ¿Por qué sería eso? database.php está en el mismo directorio. – SamB

+0

OK. Ahora puedes verificar directamente database.php? Cuando miras a database.php, ¿está mostrando OK? ¿O solo una página en blanco? Si se devuelve una página en blanco, comete un error de sintaxis en database.php. – Eray

-1

para la posteridad: sólo para aclarar el motivo esto falla es que está incluyendo desde el punto de vista de la llamada ORIGINAL permítanme explicar dando el ejemplo:

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

esto significa que para cuando llegue a "problem.php" y mencione "database.php", se encuentra en "myfolder/" en lo que respecta a PHPland, no en "myfolder/classes" (que debe tener en cuenta para que tenga sentido) . La forma correcta de hacerlo es simplemente usar rutas absolutas para todo a través de una constante hecha en la línea 1 página 1. Sé que es lo que mucha gente dice que es horrible, pero honestamente es lo que se supone que los "espacios de nombres" deben arreglar, pero Todavía usaría las constantes (los espacios de nombres en mi humilde opinión son terribles en php, y tienen que ver más con auto-engrandecimiento/publicidad de código abierto/autoría ego que cualquier cosa concreta o útil)

Cuestiones relacionadas