Error fatal: excepción no detectada ‘RuntimeException’

Estoy ejecutando PHP versión 5.2.11

Cuando ejecuto la función a continuación:

function get_dirs($path = '.') { $dirs = array(); foreach (new DirectoryIterator($path) as $file) { // This is line 462. if ($file->isDir() && !$file->isDot()) { $dirs[] = $file->getFilename(); } } return $dirs; } 

Me sale este error:

 Fatal error: Uncaught exception 'RuntimeException' with message 'DirectoryIterator::__construct(/home/test/test.com/wp-content/themes/mytheme/images) [https://stackoverflow.com/questions/1954202/fatal-error-uncaught-exception-runtimeexception/directoryiterator.--construct]: failed to open dir: No such file or directory' in /home/test/test.com/testing123/wp-content/themes/mytheme/functions.php:462 Stack trace: #0 /home/test/test.com/testing123/wp-content/themes/mytheme/functions.php(462): DirectoryIterator->__construct('/home/test/wie...') #1 /home/test/test.com/testing123/wp-content/themes/mytheme/functions.php(31): get_dirs('/home/test/wie...') #2 /home/test/test.com/testing123/wp-settings.php(717): include('/home/test/wie...') #3 /home/test/test.com/testing123/wp-config.php(76): require_once('/home/test/wie...') #4 /home/test/test.com/testing123/wp-load.php(30): require_once('/home/test/wie...') #5 /home/test/test.com/testing123 in /home/test/test.com/testing123/wp-content/themes/mytheme/functions.php on line 462 

ACTUALIZACIÓN: El problema que he encontrado aquí es que el tema se instaló en un directorio virtual fuera de la URL principal. Mis scripts esperan que el tema se instale fuera de la url principal de la raíz.

Por ejemplo, el tema en este caso se instaló en: http://www.example.com/testing123/wp-content/themes/mytheme

Sin embargo, estoy esperando esto: http://www.example.com/wp-content/themes/mytheme

Y ENTONCES…

Mi función de ruta falla, ya que no toma en consideración que podría instalarse en un directorio virtual.

¿Cómo podría explicar este escenario en mi alimentación de esta función?

 $mydir = get_dirs("$_SERVER[DOCUMENT_ROOT]/wp-content/themes/mytheme/images"); function get_dirs ($path = '.') { $dirs = array(); foreach (new DirectoryIterator($path) as $file) { if ($file->isDir() && !$file->isDot()) { $dirs[] = $file->getFilename(); } } return $dirs; } 

¿Incluirlo en un bloque de prueba?

 function get_dirs($path = '.') { $dirs = array(); try{ foreach (new DirectoryIterator($path) as $file) { //this is line 462 if ($file->isDir() && !$file->isDot()) { $dirs[] = $file->getFilename(); } } } catch(Exception $e) { //log exception or process silently //just for test echo $e; } return $dirs; 

La clase está allí, pero aparentemente su directorio de imágenes no es:

 /home/test/test.com/wp-content/themes/mytheme/images 

La parte clave del mensaje es:

 failed to open dir: No such file or directory 

O, si está allí, PHP no tiene permisos para leer de él.

Parece que la tercera línea te dice que el directorio no se puede encontrar:

no se pudo abrir el directorio: ningún archivo o directorio

Verificaría tu ruta desde el script que se está llamando y ajustaré de manera apropiada