Ciao a tutti,
sono due ore che sto sbattendo la testa per risolvere un problema (probabilmente semplicissimo), ma ormai sono fuso…

Lo scenario è il seguente: ho una funzione di nome getPath($folder, $file) con $folder come cartella iniziale di ricerca e $file il nome del file da cercare in $folder.

Ora $file potrebbe essere dentro a $folder, come a $folder/subdir1 oppure a $folder/subdir1/subdir2/etc..e via dicendo.

Quello che tento di ottenere da getPath è il percorso completo a $file, esempio:

diciamo che $file si trovi in 'controller/cartella1/cartella2/cartella3'
Codice PHP:
$file 'pippo_controller.php'
$folder 'controller'//cartella iniziale dove cominciare la ricerca 
Quello che getPath($folder, $file) in questo caso dovrebbe ritornami, una volta trovato $file in 'cartella3',
è la stringa 'controller/cartella1/cartella2/cartella3/pippo_controller.php'

Ho provato con una ricerca ricorsiva delle cartelle, ma evidentmente sto sbagliando qualcosa..

Codice PHP:
    public static function getPath($mainDir$filename) {
        
$d opendir($mainDir);
        if(
$d) {
            while((
$file readdir($d)) !== false) {
                if(
is_dir($mainDir."/".$file) && $file != "." && $file != ".." ) {
                    
self :: getPath($mainDir."/"$file$filename);
                }elseif(
$file == $filename) {
                    return 
$mainDir "/" $filename;
                    break;
                }
            }
        }
    } 
Il tutto funziona correttamente finchè $file è contenuto in $folder e non in una sotto-cartella della stessa.

Qualcuno potrebbe gentilmente aiutarmi a capire cosa sto sbagliando?

Grazie a tutti in anticipo!