Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494

    Fatal error: Cannot redeclare siteURL()

    Salve,
    sto creando un area di amministrazione, per ora ho realizzato solo due pagine (index.php e login.php).
    Ieri ho testato il funzionamento delle funzioni inserite e di tutte le classi, e funzionava alla perfezione, oggi ho iniziato a ripulire il codice e a sistemarmi le cartelle, per una questione di ordine, una volta pubblicato tutto mi usciva l'errore:

    [/html]
    Fatal error: Cannot redeclare siteURL() (previously declared in /web/htdocs/...../files/config.php:11) in /web/htdocs/...../files/config.php on line 14
    [html]

    La cosa strana è che quella funzione viene dichiarata solo ed esclusivamente su config.php.

    Questo errore viene fuori sulla pagina index.php dove all'inizio della pagina c'è un include del file chiamato funzione.php nella quale all'interno di esso c'è l'include di config.php con quella funzione.

    Se provo a raggirare questo problema con un include_once o con function_exists, mi vengono fuori altri problemi sempre di funzioni.

    Io penso sia un problema di inclusione dei file, perchè prima di mettere a posto il codice funzionava tutto.

    Qualche consiglio?

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Come hai capito da solo, il problema è che siteURL() viene definito una seconda volta.Tipicamente è dovuto al fatto che lo stesso file viene incluso una seconda volta, ma può anche essere dovuto a del pessimo codice:
    codice:
    class Foo {
      function __construct() {
       function siteURL() {
       }
      }
     }
     $obj1 = new Foo();
     $obj2 = new Foo();
    Se hai solo due file possiamo controllarli noi, se li alleghi qui.

  3. #3
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    I file php dove vi sono le funzioni sono un bel pò, l'errore me lo da su config.php e la funzione è la seguente:

    Codice PHP:
    function siteURL(){  $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" "http://";
    $domainName $_SERVER['HTTP_HOST'].'/'.''// /foldername is subdirectory
    return $protocol.$domainName;

    Il problema è l'inclusione del file più di una volta, ma il file config.php è incluso solo in funzione.php

    Codice PHP:
    define('ROOT'$_SERVER['DOCUMENT_ROOT']);

    //Files
    include ROOT '/files/db.php';
    include 
    ROOT '/files/config.php';
    include 
    'session.php';
    include 
    'database.php';
    include 
    'email.php';
    include 
    'login.php';
    include 
    'register.php';
    include 
    'adduser.php';
    include 
    'user.php';
    include 
    'comment.php';

    //Configurazione Database
    $db = new ASDatabase("mysql"BKDB_HOSTBKDB_NAMEBKDB_USERBKDB_PASS);

    ASSession::startSession();

    $login        = new ASLogin();
    $register     = new ASRegister();
    $registeruser = new ASRegisteruser();
    $mailer       = new ASEmail(); 
    Mentre il file funzione.php è incluso più di una volta precisamente in tre file: index.php, login.php e ajax.php

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Quindi: siteURLè definito solo in config.php, config.php viene incluso solo da funzione.php e funzione.php viene incluso dalle pagine che ne fanno utilizzo. Se è così non dovresti avere problemi. Hai controllato che siteURL sia effettivamente presente solo in config.php? A volte capita, tramite copia e incolla, di portare altrove dei pezzi di codici di altre pagine. Sei sicuro che in session.php, database.php, etc., non venga incluso config.php? Per confermare che il problema sia che config.php è incluso più volte, metti in cima a config.php qualcosa come "echo "inc. "; " e vedi se lo visualizzi due volte.

  5. #5
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Si sono sicuro anche perché ho fatto una ricerca con dreamweaver. Gli altri file che sono inclusi su funzione.php richiamano i dati di config.php come ad esempio il nome database ecc tramite BKDB_HOST che si trova su funzione.php
    Ultima modifica di lukezz; 19-12-2014 a 14:42

  6. #6
    Quote Originariamente inviata da lukezz Visualizza il messaggio
    Mentre il file funzione.php è incluso più di una volta precisamente in tre file: index.php, login.php e ajax.php
    Se il file funzione.php (che include config.php) è incluso più volte la conseguenza è che anche config.php viene incluso più volte!!!
    Ultima modifica di satifal; 19-12-2014 a 14:55
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    La cosa strana è che ieri funzionava, quindi come potrei risolvere?

  8. #8
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    ho provato a stampare ciao con echo sul file config.php e lo stampa una sola volta

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.