errori di notice su sito caricato sul server

ciao,

sono alle prese con un problema penso di configurazione del server.

Ho testato il sito in locale, l'ho caricato sul server e sono iniziati i problemi, visualizzandomi  diversi errori.

uno tra questi era con $docRoot = $_SERVER['DOCUMENT_ROOT'];  la var $docRoot risultava vuota. questo l'ho risolto mettendo l'url del sito.

adesso mi rimangono questo errori:

Notice: Only variable references should be returned by reference in ...\prova\library\database.php on line 9

Notice: Only variable references should be returned by reference in ...\prova\library\database.php on line 25

il file database.php:

<?php
require_once 'config.php';

$dbConn = mysql_connect ($dbHost, $dbUser, $dbPass) or die ('MySQL connect failed. ' . mysql_error());
mysql_select_db($dbName) or die('Cannot select database. ' . mysql_error());

function &dbQuery($sql)
{
   return mysql_query($sql);
}

function dbAffectedRows()
{
   global $dbConn;

   return mysql_affected_rows($dbConn);
}

function &dbFetchArray($result, $resultType = MYSQL_NUM) {
   return mysql_fetch_array($result, $resultType);
}

function &dbFetchAssoc($result)
{
   return @mysql_fetch_assoc($result);
}

function &dbFetchRow($result)
{
   return mysql_fetch_row($result);
}

function dbFreeResult($result)
{
   return mysql_free_result($result);
}

function dbNumRows($result)
{
   return mysql_num_rows($result);
}

function dbSelect($dbName)
{
   return mysql_select_db($dbName);
}

function dbInsertId()
{
   return mysql_insert_id();
}
?>

alla riga 9 c'è: return mysql_query($sql);

alla riga 25 c'è: return @mysql_fetch_assoc($result);

perchè mannaggia??

inviato 10 anni fa
iTek
iTek
1
X 0 X

Togli la & dal nome della funzione e vedi se va a posto.

risposto 10 anni fa
LonelyWolf
X 0 X

ciao,

non funziona...

ho provato a togliere error_reporting(E_ALL); dal file di configurazione.

mi entra nel sito, ma è tutto sballato, senza formattazione.

nei link, invece di avere il web path tipo

www.miosito.it/cartella/

ho l'indirizzo del webserver, tipo:

d:/www/MW_qPIR...etc etc/cartella/

Probabilmente non riconosce il path corretto o sbaglio qualcosa io.

in origine la parte in  questione è questa:

<?php

$thisFile = str_replace('\\', '/', __FILE__);

$docRoot = $_SERVER['DOCUMENT_ROOT'];

$webRoot  = str_replace(array($docRoot, 'library/config.php'), '', $thisFile);?>

ma come ho detto $_SERVER['DOCUMENT_ROOT']; non è presente nella configurazione del server ( controllato con phpinfo )

quindi? come dovrei scrivere il path?  come dicevo in locale funziona tutto bene

risposto 10 anni fa
iTek
iTek
1
X 0 X

Come giustamente dice LonelyWolf i notice sono causati dalla & impiegata per definire le due funzioni.

In locale stai usando Apache? In remoto hai IIS?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

si in locale uso apache, sul server:

System    Windows NT SPHERES 5.0 build 2195

Server API    CGI/FastCGI

cosa vuol dire..che ci sono problemi? :o

cmq ho provato a togliere gli & e non funziona lo stesso

risposto 10 anni fa
iTek
iTek
1
X 0 X

Quindi togliendo le & ottieni gli stessi Notice?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

se tolgo le "&" gli notice spariscono tranne uno.

Se lascio

$docRoot = $_SERVER['DOCUMENT_ROOT'];  mi da

Notice: Undefined index: DOCUMENT_ROOT in d:\www\MW_qPIRnnccq\....\prova\library\config.php on line 30

se tolgo error_reporting(E_ALL); allora sparisce il notice, ma è tutto sballato il layout

se ti interessa sul server è installato php 5.1.4

risposto 10 anni fa
iTek
iTek
1
X 0 X

Mi sa che il problema rimane nel document root.

In apache si può settare e se guardi in httpd.conf puoi trovare dove questo punta, di solito il suo valore è / cioè la radice di ogni sito.

Serve perché così ogni volta che viene richiamato document_root esso parte proprio dalla radice del sito.

Se dici che in php_info non è settato, puoi farlo tu, lavorandoti la $docRoot e asssegnandogli nel file di configurazione un valore tipo "./"

O meglio, provare a settare apache da script php, se te lo fa fare:

apache_setenv("DOCUMENT_ROOT", "/");

risposto 10 anni fa
Marco Grazia
X 0 X

ok, ma sul server non c'è apache... :(

System    Windows NT SPHERES 5.0 build 2195

Server API    CGI/FastCGI

risposto 10 anni fa
iTek
iTek
1
X 0 X

ho provato a togliere $_SERVER['DOCUMENT_ROOT']; e mettere "./"

mi è sparito il notice ma il layout è tutto sballato.

inotre se mi posiziono sopra con il mouse sui link del sito, anzichè visualizzarmi il percorso web tipo:

www.miosito.it/cartella/

mi visualizza:

d:/www/MW_qPIRnnccq/..../cartella/

risposto 10 anni fa
iTek
iTek
1
X 0 X

Sì perché per document root, invece di prendere la root del tuo sito, prende la root dell'intero disco rigido.

Ma proprio un server IIS dovevi scegliere? :D

Comunque mi pare che la definizione di root, non dovrebbe influire sulla forma del sito, a meno che non carichi parti di esso tramite include.

Puoi provare a fare un'altra cosa, cioè dare a document_root il valore nullo.

cioè '' senza barre di nessun tipo, forse IIS riesce a capire che quello che cerchi di fare è far iniziare dalla root del sito.

risposto 10 anni fa
Marco Grazia
X 0 X

niente... :'( neppure con il valore nullo.

ho provato con altre variabili sia $_SERVER che $_ENV controllando su phpinfo la configurazione, ma niente da fare.

purtroppo si, ci sono file inclusi.

praticamente c'è un file template.php che viene incluso con require_once nella index assieme ai file config in cui ci sono le definizioni dell url di cui stiamo parlando...

non ho mai avuto problemi con IIS!!

cosa posso fare adesso? sto ri-meditando il suicidio... :'(

risposto 10 anni fa
iTek
iTek
1
modificato 10 anni fa
X 0 X

NOn aver mai avuto problemi con IIS è catartico :D

Comunque non so come aiutarti, non conosco quel server, l'unica cosa che mi viene in mente è di modificare a mano tutti gli include, dandogli il percorso senza usare document root

risposto 10 anni fa
Marco Grazia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda