echo $begrüßung;
Die Verzeichnisse werden angezeigt, die Unterverzeichnisse nicht mehr. Das scheint eine Berechtigungssache zu sein,
Was verleitet dich zu der Annahme, dass es sich um ein Berechtigungsproblem handelt?
Hast du die Ergebnisse der verwendeten Funktionen durch Kontrollausgaben geprüft? Besonders eignet sich dafür var_dump(), denn das zeigt dir auch den Typ des Wertes an. Hast du die Ausgabe von Fehlermeldungen eingeschaltet (display_errors) und das error_reporting auf einen angemessen hohen Wert gestellt (E_ALL ist beim Entwickeln immer eine gute Idee)?
bekomme ich gar nichts angezeigt.
Das ist keine Information, mit der man Fehler suchen kann. Findet keine Ausgabe statt, weil eine Bedingung nicht erfüllt wurde? Prüfe das mit einer Kontrollausgabe innerhalb des bedingten Anweisungsblocks. Findet keine Ausgabe statt, weil eine beteiligte Variable einen Leerstring oder nur "unsichtbare" Zeichen enthält? Prüfe das mit einer Kontrollausgabe, indem du vor und nach der Variable sichbare Zeichen ausgibst, oder den Inhalt mit var_dump() überprüfst.
Warum darf ich mir keine Unterverzeichnisse anzeigen lassen und wie kann ich das ändern?
Falls es wirklich ein Berechtigungsproblem ist, kann man diese Frage nur beantworten, wenn man die Rechte und Besitzverhältnisse der beteiligten Verzeichnisse sowie den Benutzer, der zuzugreifen versucht, kennt.
echo "$verabschiedung $name";