• User

    errore di shop script free. Aiutatemi vi prego!!!

    ho installato per prova sul mio sito shop script free....riesco ad utilizzarlo appieno anche se su ogni pagina mi compare sempre questa fastidiosa scritta:

    Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/usr/share/pear/./templates/tmpl1//./templates/tmpl1/index.tpl.html) is not within the allowed path(s): (/usr/share/php/:/tmp/:/var/www/netsons.org/itinerarimondo/:/var/lib/php5/) in /var/www/netsons.org/itinerarimondo/catalogo/smarty/core/core.get_include_path.php on line 34

    da novello ho capito che open_basedir è ristretto pertanto in un file (ma non so quale. forse core.get_include_path.php??) la path non è stata riscritta correttamente e sta cercando un file sul server (forse cerca ./templates/tmpl1/index.tpl.html??) anzichè sul mio sito.

    devo modificare core.get_include_path.php? dico bene? ma che ci devo scrivere?

    ecco il codice richiamato da linea 33 a linea 36:

    foreach ($_path_array as $_include_path) {
    if (file_exists($_include_path . DIRECTORY_SEPARATOR . $params['file_path'])) {
    $params['new_file_path'] = $_include_path . DIRECTORY_SEPARATOR . $params['file_path'];
    return true;

    a me basterebbe anche solo che quell'errore non venisse visualizzato, se poi si risolve meglio ancora!

    dal supporto di shop script mi hanno scritto "One way to solve the problem is to include your home directory path in the path list that PHP is allowed to open, specified by open_basedir. For example, the following setting indicates that PHP script can read files located in /home/vhosts, /usr/share/php/pear/ and /tmp folders:
    open_basedir =/home/vhosts:/usr/share/php/pear/:/tmp"

    il problema è che non posso modificare le impostazioni di php del server!!!


  • User Attivo

    Ciao Thenax,
    ovviamente non ho una risposta secca per risolvere problemi di questo tipo, però posso darti alcuni suggerimenti operativi.

    Per prima cosa prova a farti stampare a monitor l'argomento di **file_exists **aggiungendo la riga in rosso:

    **foreach ($_path_array as $_include_path) { **
    echo $_include_path . DIRECTORY_SEPARATOR . $params['file_path'];
    if (file_exists($_include_path . DIRECTORY_SEPARATOR . $params['file_path'])) {

    e prova a vedere cosa restituisce. Se il percorso restituito è sbagliato e tu hai quello giusto (ad esempio un file nella tua root) puoi sostituire all'argomento di file_exists il file preciso.

    Come secondo tentativo prova ad eliminare tutta la clausola if, mettendo/togliendo le istruzioni all'interno dell'if.

    Infine puoi provare ad usare l'istruzione **error_reporting **ad inizio script, che consente di specificare quale errori riportare.

    Con
    error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

    visualizzi tutti gli errori, mentre nel tuo caso con:

    error_reporting (E_ERROR);
    forse riesci a nascondere il warning che ti da fastidio.

    Fammi sapere com'è andata!:D


  • User

    Ciao,

    Il path che genera l'errore e' gia riportato nel messaggio di errore stesso.

    
     /usr/share/pear/./templates/tmpl1/       /        ./templates/tmpl1/index.tpl.html
       $_include_path                       SEPARATOR      $params['file_path']
    
    ```Il problema puo' essere quindi che il path relativo ./templates/tmpl1/ e' specificato tanto nell' include_path che nel file name. La directory creata ovviamente non esiste.
    
    Un'altra possibile fonte di errore e' il doppio slash introdotto sul path da **DIRECTORY_SEPARATOR** in quanto l'include_path ne e' gia' provvisto di suo.
    
    Credo quindi che ./templates/tmpl1/ non dovrebbe essere presente nella lista degli include_path in quanto sembra non rispettare le convenzioni assunte da questa funzione. 
    Prova a vedere dove questo viene aggiunto e prova a rimuoverlo.
    
    Ciao
    Bruno