开发者

Fatal error: Uncaught exception 'RuntimeException'

开发者 https://www.devze.com 2022-12-14 22:12 出处:网络
I\'m running PHP version 5.2.11 When I run the function below: function get_dirs($path = \'.\') { $dirs = array();

I'm running PHP version 5.2.11

When I run the function below:

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;
}

I get this error:

Fatal error: Uncaught exception 'RuntimeException' with mess开发者_开发知识库age 'DirectoryIterator::__construct(/home/test/test.com/wp-content/themes/mytheme/images) [<a href='directoryiterator.--construct'>directoryiterator.--construct</a>]: 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

UPDATE: The problem here I've found is that the theme was installed under a virtual directory off the main URL. My scripts are expecting that the theme is installed off the main root url.

For example, the theme in this case was installed at: http://www.example.com/testing123/wp-content/themes/mytheme

However, I'm expecting this: http://www.example.com/wp-content/themes/mytheme

AND SO...

My path function fails since it does not take into consideration that it could be installed under a virtual directory.

How could I account for this scenario in my feeding of this function?

$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;
}


Enclose it in a try-catch block?

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;


The class is there, but apparently your images directory is not:

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

The key part of the message being:

failed to open dir: No such file or directory

Or, if it is there, PHP doesn't have permissions to read from it.


It looks like the third line is telling you that the directory cannot be found:

failed to open dir: No such file or directory

I would check your path from the script being called and adjust that appropriately

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号