Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [crontab] trovare $_SERVER[documentroot]

    buongiorno,
    come riesco ad includere un file in una crontab dal momento che le variabili $_SERVER non sono valorizzate?

    mi spiego meglio con un esempio:
    Codice PHP:
    include($_SERVER['DOCUMENT_ROOT'].'/cartella/file.php'); 
    se richiamato via web col browser dall'indirizzo nomesito.com/cartella/file.php funziona perfettamente. Se invece a richiamarlo è una cronjob, ovviamente non viene trovato il cartella/file.php..

    come si ovvia a queste situazioni?
    Una forte determinazione ad esser felici vi aiuterà

  2. #2

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Come dicevo su altro post, le cron tab sono una cosa di sistema operativo non di apache.

    Qundi quando lanci uno script da cron tab tutti i percorsi e le inclusioni li devi gestire a partire dal percorso stesso dello script.

    se hai una struttura tipo

    root
    |
    +--> dir_1
    |
    \--> dir_2
    |
    \--> dir_2-1


    e il tuo file si trova in "dir_2-1" per includere un file che trovi in "dir_1" o usi un path relativo tipo
    "../../dir_1/" oppure devi navigare il path con un percorso assoluto e l'include sara'una cosa del tipo include("/dir_1/file.php") ;

    il carattere / fa partire dalla root.
    il Problema pero' e' che se la root vista dal parser in quel momento non e' la document root di apache ma la root di sistema. Quindi hai 2 possibili soluzioni, 1 conoscere il perorso su disco del file ( fai un getcwd() e vedi subito ) oppure farti una procedura che naviga il path fino alla dir che ti serve tipo :

    Codice PHP:

    function navigatePath $target )
    {
        
    $path getcwd();
        
    $path str_replace"\\\\" "/" $path) ;
        
    $tokens explode("/" $path) ;
        
    $i=0;
        for ( 
    $i=$i<count($tokens) ; $i++ )
        {
            
    $t $tokens[$i] ;
            if( 
    $t == $target )
            {
                break;
            }
        }

        if( 
    $i>=count($tokens) )
            return 
    false;
        
    $out "" ;
        for ( 
    $j=$j<$i $j++ )
            
    $out .= $tokens[$j]."/" ;

        return 
    $out ;


    Ovviamente e' la prima soluzione che mi e' venuta in mente e il codice e' scritto di getto spero ti possa essere utile.

    P.S.
    Non si puo' sistemare sul forum il parsing del carattere \ nei listati php ????
    E' abbastanza frustrante che ogni volta che metto il carattere \ viene visto come carattere di escape e non viene stampato. inoltre si puo' disabilitare il caricamento delle emoticons nei listati php????

  4. #4
    Originariamente inviato da Virus_101
    Quindi hai 2 possibili soluzioni, 1 conoscere il perorso su disco del file ( fai un getcwd() e vedi subito ) oppure farti una procedura che naviga il path fino alla dir che ti serve
    Oppure, ancora meglio, utilizzi il metodo descritto nell'articolo suggerito in precedenza: semplice, elegante e completamente portabile.

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Quoto.

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.