Opgelost Map op de server openen vanuit een webpagina

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.
Ja, ik zal het weer oppakken.
Ik heb het pad van mijn provider ingevuld in boven genoemde functie
Maar waarom?
Waarom wil jij dit pad zo graag gebruiken, als er zat mogelijkheden zijn om die in te laten vullen door PHP?
Je maakt het wel moeilijk voor jezelf. Stel eens oor dat je hosting besluit om je site te verhuizen naar een andere server, en jij ben top vakantie.

Resultaat: Je site werkt niet meer goed. En als je nou de juiste functies had gebruikt, dan was er niks mis.
 
Publiceren mislukt. De reactie is geen geldige JSON-reactie.
Zoek eens uit welke reactie je dan krijgt?

Maar phpFileTree is behoorlijk oud, als ik de GitHub pagina van de maker mag geloven. Laatste update is 11 jaar geleden!
Grote kans dat daarom het script niet werkt.
 
Denk dat niet het fysieke pad de oorzaak is, maar dat phpFileTree niet goed meer werkt.
Heb jij een alternatief script? Mijn php-kennis is daarvoor onvoldoende.
 
Het script van je (wat ik heb gevonden) doet niks met JSON, dus waar die error over JSON vandaan komt? 💁‍♂️

Of heb je een ander of aangepast script gebruikt dan waar ik heen linkte?
 
Laatst bewerkt:
Als ik een nieuwe pagina aanmaak met Elementor met de shortcode [files] krijg ik bij het publiceren van de pagina de foutmelding: Call to undefined function php_file_tree()
 
Dat betekent dat die functie niet bestaat.
Heb je het script wel geïncludeerd?
 
De functie staat in functions.php van het child-thema. De directory files staat in de root van het hoofdthema.
 
Laat eens wat relevante code zien? En wat voor relevants er in welk bestand staat?
 
Hier de bestanden.
 

Bijlagen

  • functions (1).zip
    1,1 KB · Weergaven: 3
  • files.zip
    24,4 KB · Weergaven: 3
Graag hier de relevante code (+/- 30 regels) plaatsen. Geen zip-jes aub. Daar kan ik niks mee.

We willen graag weten hoe je het ingebouwd hebt.
 
Files is een map met meerdere mappen/bestanden. Ga ik niet apart opsturen. Wat is het probleem met unzip?
 
Omdat je hier ook prima codes kan plaatsen. Dus deel de relevante codes even. Ik heb geen zin om zelf je probleem te zoeken in meerdere bestanden.
Wat is er mis om te zeggen van: Dit hier.... heb ik toegevoegd aan functions.php?
 
Laatst bewerkt:
Ik heb even gekeken, hoewel ik liever codes hier op het forum zie (op mobieltjes en tablets heb je ook niks aan downloads), of als je ze verwijderd.

Maar probeer eens een absoluut pad te maken op de manier die ik omschreef. Want bestaat de map /files wel?
Blijkbaar lees je niet echt mee hier, want ik zie nog steeds een zelf ingevuld pad. Waarom toch?!?!?
 
Weinig tijd gehad, maar ben intussen een stap verder.
Ik heb het absolute pad toegevoegd aan php_file_tree.php
Nu zie ik iop mijn pagina de map Oefenmuziek! Twee problemen: alle bestanden uit de subdirs staan in de hoofddir en als ik klik op een mp3-bestand krijg ik de melding dat het bestand niet is te vinden.
 
Wat heb je dan aangepast. Laat de relevante code eens hier zien.
En een werkende demo mag ook wel.
 
Hier de code voor de shortcode:
Code:
function files(){
    include("/mnt/web201/a0/22/510345822/htdocs/WordPress_01/wp-content/themes/neve/files/php_file_tree.php");
    return php_file_tree("/mnt/web201/a0/22/510345822/htdocs/WordPress_01/oefenmuziek/", str_replace("/mnt/web201/a0/22/510345822/htdocs/WordPress_01/oefenmuziek/","","[link]"));
}
add_shortcode('files','files');
En hier de php_file_tree.php:
<?php
/*
    == PHP FILE TREE ==
           Let's call it...oh, say...version 1?
       == AUTHOR ==
           Cory S.N. LaViska        http://abeautifulsite.net/
       == DOCUMENTATION ==
       For documentation and updates, visit http://abeautifulsite.net/notebook.php?article=21
       */

function php_file_tree($directory, $return_link, $extensions = array('mp3','m3u','mid','pdf')) {
    // Generates a valid XHTML list of all directories, sub-directories, and files in $directory
    // Remove trailing slash
    if( substr($directory, -1) == "/" ) $directory = substr($directory, 0, strlen($directory) - 1);
    $code .= php_file_tree_dir($directory, $return_link, $extensions);
    return $code;
}

function php_file_tree_dir($directory, $return_link, $extensions = array(), $first_call = true) {
    // Recursive function called by php_file_tree() to list directories/files
    
    // Get and sort directories/files
    if( function_exists("scandir") ) $file = scandir($directory); else $file = php4_scandir($directory);
    natcasesort($file);
    // Make directories first
    $files = $dirs = array();
    foreach($file as $this_file) {
        if( is_dir("$directory/$this_file" ) ) $dirs[] = $this_file; else $files[] = $this_file;
    }
    $file = array_merge($dirs, $files);
    
    // Filter unwanted extensions
    if( !empty($extensions) ) {
        foreach( array_keys($file) as $key ) {
            if( !is_dir("$directory/$file[$key]") ) {
                $ext = substr($file[$key], strrpos($file[$key], ".") + 1);
                if( !in_array($ext, $extensions) ) unset($file[$key]);
            }
        }
    }
    
    if( count($file) > 2 ) { // Use 2 instead of 0 to account for . and .. "directories"
        $php_file_tree = "<ul";
        if( $first_call ) { $php_file_tree .= " class=\"php-file-tree\""; $first_call = false; }
        $php_file_tree .= ">";
        foreach( $file as $this_file ) {
            if( $this_file != "." && $this_file != ".." ) {
                if( is_dir("$directory/$this_file") ) {
                    // Directory
                    $php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">" . htmlspecialchars($this_file) . "</a>";
                    $php_file_tree .= php_file_tree_dir("$directory/$this_file", $return_link ,$extensions, false);
                    $php_file_tree .= "</li>";
                } else {
                    // File
                    // Get extension (prepend 'ext-' to prevent invalid classes from extensions that begin with numbers)
                    $ext = "ext-" . substr($this_file, strrpos($this_file, ".") + 1);
                    //$link = str_replace("[link]", "$directory/" . urlencode($this_file), $return_link);
                    $link = 'http://www.testsite-aad.nl/oefenmuziek/'.$directory.'/'.$this_file;
                    $link = str_replace('/mnt/web201/a0/22/510345822/htdocs/WordPress_01/oefenmuziek/','',$link);
                    $php_file_tree .= "<li class=\"pft-file " . strtolower($ext) . "\"><a href=\"$link\">" . htmlspecialchars($this_file) . "</a></li>";
                }
            }
        }
        $php_file_tree .= "</ul>";
    }
    return $php_file_tree;
}

// For PHP4 compatibility
function php4_scandir($dir) {
    $dh  = opendir($dir);
    while( false !== ($filename = readdir($dh)) ) {
        $files[] = $filename;
    }
    sort($files);
    return($files);
}
 
Laatst bewerkt door een moderator:
Je blijft koppig met dat absolute lange pad, hé? Waar is dat nou toch voor nodig?
Of wil je dat je script graag breekt na een verhuizing van server? Nogmaals: PHP kan het pad zelf wel opzoeken, daar hoef jij niet pad voor te noemen en te herhalen!!!!!!!

Heb je een uitvoerbaarvoorbeeld van je script?
Ik heb een vermoeden dat het door het pad komt waarbij jij koppig blijkt te zijn, en deze hardcoded invult.
Dat hele volledig pad heeft niks, nada, noppes met je URL te maken.
 
Laatst bewerkt:
Het script is een bestaand script met daarin absolute paden (weliswaar niet ideaal) wat jaren goed heeft gewerkt. Door de absolute paden door de actuele te vervangen kan ik op mijn webpagina naar bedoelde servermap. Vermoedelijk zie ik nog een oud pad over het hoofd.
Ik kom er wel uit.
 
Kijk eens wat dit doet:

PHP:
<?php
    echo $_SERVER['DOCUMENT_ROOT'];
?>

Dan hoef je helemaal niet over het pad te bekommeren.
Maar laat eens een voorbeeld van je script zien die we in werking kunnen zien.
Mogelijk is je URL in je hyperlink (anchor) gewoon vreemd en sta je te blindstaren op dat pad wat niet boeiend voor jou is.
 
Laatst bewerkt:
Mijn shortcode [files] met mijn absolute paden is niet de mooiste oplossing maar werkt nu. Ik voeg het simpel toe aan een pagina. Mijn bestanden zet ik in één map. Dat is voor mijn toepassing voldoende.
Ik sluit dit onderwerp en zet `em op "Opgelost".
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan