Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: santi810 en 20 Agosto 2014, 16:15 pm



Título: fallo require en PHP
Publicado por: santi810 en 20 Agosto 2014, 16:15 pm
En primer lugar pido disculpas si me equivoco de carpeta, no estoy seguro de que esta se la de PHP.

Estoy intentando montar una aplicacion  en php para interactuar con una base de datos MySQL para apuntar varias cosas, como los dias que trabajo.

Al basar en debuger se para aqui:
Código:
require('./extra_funciones.php');
como si no fuera capaz de acceder al archivo, cuando hasta ahora me accedia sin problemas.

He comprobado los nombres y creo que esta todo bien por lo que no entiendo lo que esta fallando, a ver si alguien puede ayudarme y encuentra lo que yo no estoy viendo.

Adjunto los 2 archivos:


index.php:
Código:
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<?php
/* index.php (controlador) */
require('./vista/menu.php');
require('./conexion.php');
require('./extra_funciones.php');
$conexion = abrir_conexion();
if (!$conexion) {
    require('.\vista\error.php');
    exit;
}

if (isset($_POST["engadir"])) {
    $accion = "engadir";
}
switch ($accion) {
    case "engadir":
        $fecha = $_POST["fecha1"];
        $usuario = $_POST["usuario"];
        $sitio = $_POST["sitio"];
        $cobro = $_POST["cobro"];
        $notas = $_POST["notas"];
        $propina = $_POST["propina"];
        $tempo = $_POST["tempo"];
        $pago_asoc = $_POST["pago_asoc"];
        $engadir = engadir_extra($fecha, $usuario, $sitio, $propina, $cobro,
                $notas, $tempo, $pago_asoc);       
break;
}

//require('./vista/pie.php');



extra_funciones.php
Código:
<?php
/* Abre la conexion con la base de datos */ 
function abrir_conexion(){ 
    define("SERVIDOR", "localhost");
    define("USUARIO", "raspberry");
    define("PASS", "cFcE7jSSXsAY6AuY");
    define("BD", "ServidorWeb");
    $conexion = mysqli_connect(SERVIDOR, USUARIO, PASS, BD);
    if ($conexion){
        @mysqli_set_charset($conexion, "UTF8");
    }
    //mysqli_free_result($conexion);
    //mysqli_close($conexion);
    return $conexion;
}
/* Mete en $sitios os nombres dos locales
 * para mostralos no formulario de ingreso*/
function buscar_sitios(){
    $conexion = abrir_conexion();
    $sentencia = "SELECT Nomlocal FROM local";
    $resultado = mysqli_query($conexion, $sentencia);
    if (!$resultado) {
        return FALSE;
    } else {
        while ($fila = mysqli_fetch_assoc($resultado)) {
            $sitios[] = $fila;
        }
        return $sitios;
    }
}
/* Funcion igual a anterior pero saca 2 resultados, ID de usuario e nombre */
function buscar_usuarios(){
    $conexion = abrir_conexion();
    $sentencia = "SELECT Nombre, usuID FROM usuarios";
    $resultado = mysqli_query($conexion, $sentencia);
    if (!$resultado) {
        return FALSE;
    } else {
        while ($fila = mysqli_fetch_assoc($resultado)) {
            $usuarios[] = $fila;
        }
        return $usuarios;
    }
}
// añade os datos de 1 extra, devolve true si se añadiron correctamente
function engadir_extra($fecha, $usuario, $sitio, $propina, $cobro, $notas, $tempo, $pago_asoc){
    $conexion = mysqli_connect(SERVIDOR, USUARIO, PASS, BD);
        $sql = "INSERT INTO `ServidorWeb`.`extras` (`Usuario`, `extraID`, `fecha`,"
                . " `Local`, `tempo`, `precio`, `notas`, `pago_asoc`, `Propina`)"
                . " VALUES (\'$usuario\', NULL, \'$fecha\', \'$sitio\', \'$tempo\', \'$cobro\', \'$notas\', \'$pago_asoc\', \'$propina\');";
        $resultado = mysqli_query($conexion, $sql);
if ($resultado){
            return TRUE;
        }
}
?>


Título: Re: fallo require en PHP
Publicado por: ::: Devil ::: en 20 Agosto 2014, 21:25 pm
examples

comillas  ;D  ;D  ;D  ;D  ;D  :-X

require("noexiste.php");


Título: Re: fallo require en PHP
Publicado por: #!drvy en 20 Agosto 2014, 21:40 pm
Asegurante de que conexion.php no tiene errores y que el script que tienes permiso de lectura para leer el extra_funciones.php

PD: Los require/include van sin parantesis. No son funciones.
http://php.net/manual/es/function.include.php

Saludos


Título: Re: fallo require en PHP
Publicado por: santi810 en 20 Agosto 2014, 22:30 pm
Cambie los parentesis, gracias por el apunte!!


El error persiste y los permisos son 777

Código:
root@raspberrypi:/var/www/beta# ls -l
total 40
drwxrwxrwx 2 nobody users 4096 ago 10 17:57 calendario
-rwxrwxrwx 1 nobody users  398 ago 20 22:24 conexion.php
-rwxrwxrwx 1 nobody users  202 jul 25 23:28 extra_consultar.php
-rwxrwxrwx 1 nobody users 3712 ago 20 15:17 extra_engadir.php
-rwxrwxrwx 1 nobody users 2036 ago 20 15:58 extra_funciones.php
drwxrwxrwx 2 nobody users 4096 jul 31 14:13 images
-rwxrwxrwx 1 nobody users 2299 ago 11 16:23 index.css
-rwxrwxrwx 1 nobody users  970 ago 20 22:24 index.php
drwxrwxrwx 3 nobody users 4096 jul 31 00:37 nbproject
drwxrwxrwx 2 nobody users 4096 jul 31 23:30 vista
root@raspberrypi:/var/www/beta#



En conexion.php no hay ningun error, el debuger lo lee correctamente, adjunto el archivo tambien por si es de utilidad:
Código:
<?php
/* Abre la conexion con la base de datos */
function abrir_conexion(){  
    define("SERVIDOR", "localhost");
    define("USUARIO", "raspberry");
    define("PASS", "++++++");
    define("BD", "ServidorWeb");
    $conexion = mysqli_connect(SERVIDOR, USUARIO, PASS, BD);
    if ($conexion){
        mysqli_set_charset($conexion, "UTF8");
    }
    return $conexion;
}
?>



Las comillas tambien prove a cambiarlas pero no es eso, ademas en el manual de php tambien estan como comillas simples ('').


Título: Re: fallo require en PHP
Publicado por: crksergio en 20 Agosto 2014, 23:54 pm
Fíjate que no estés haciendo un doble require. Es decir, si estás en la página 1, en la cuál haces require de la página 2 y 3, pero en la 2 ya estás haciendo un require de la 3, te va a dar error. Es algo bastante típico.


Título: Re: fallo require en PHP
Publicado por: santi810 en 21 Agosto 2014, 00:46 am
No, falla ya en la primera ejecucion


Título: Re: fallo require en PHP
Publicado por: santi810 en 21 Agosto 2014, 00:57 am
Vale, la funcion abrir_conexion esta en los dos archivos, por eso me da error!

gracias de todos modos!

Por mi podeis cerrar el hilo, que no se si puedo hacerlo yo