Ahoj,
používáme plugin WP Media Folder
Při hledání důvodu pádu našeho produkčního webu jsme dnes narazili na následující řádky PHP kódu v souboru class-media-folder.php:
public function generatePageTree($datas, $parent = 0, $depth = 0, $limit = 0) {
if ($limit > 1000)
return '';
$tree = array();
for ($i = 0, $ni = count($datas); $i < $ni; $i++) {
if (!empty($datas[$i])) {
if ($datas[$i]->parent == $parent) {
$datas[$i]->name = $datas[$i]->name;
$datas[$i]->depth = $depth;
$tree[] = $datas[$i];
$t = $this->generatePageTree($datas, $datas[$i]->term_id, $depth + 1, $limit++);
$tree = array_merge($tree, $t);
}
}
}
return $tree;
}
V protokolu aplikace byla hlášena chybová zpráva:
PHP Warning: array_merge(): Argument #2 není pole v /var/www/html/wp-content/plugins/wp-media-folder/class/class-media-folder.php na řádku 1310
PHP Fatal error: Uncaught TypeError: Argument 1 předán do Wp_Media_Folder:
arent_sort() musí být typu pole, s hodnotou null, volaná v /var/www/html/wp-content/plugins/wp-media-folder/class/class-media-folder.php na řádku 470 a definovaná v /var/www/html/wp-content/plugins/wp-media-folder/class/class-media-folder.php:1327
Po změně prvního řádku výše uvedené funkce na "if ($limit > 1500)" webová stránka znovu fungovala.
Mohl byste prosím vysvětlit, jaký je důvod limitu 1000 rekurzivních volání a jak se mu lze vyhnout nebo ho co nejlépe zvýšit (např. bez vlastních změn přímo v kódu pluginu)?
S pozdravem,
vipteam
používáme plugin WP Media Folder
Při hledání důvodu pádu našeho produkčního webu jsme dnes narazili na následující řádky PHP kódu v souboru class-media-folder.php:
public function generatePageTree($datas, $parent = 0, $depth = 0, $limit = 0) {
if ($limit > 1000)
return '';
$tree = array();
for ($i = 0, $ni = count($datas); $i < $ni; $i++) {
if (!empty($datas[$i])) {
if ($datas[$i]->parent == $parent) {
$datas[$i]->name = $datas[$i]->name;
$datas[$i]->depth = $depth;
$tree[] = $datas[$i];
$t = $this->generatePageTree($datas, $datas[$i]->term_id, $depth + 1, $limit++);
$tree = array_merge($tree, $t);
}
}
}
return $tree;
}
V protokolu aplikace byla hlášena chybová zpráva:
PHP Warning: array_merge(): Argument #2 není pole v /var/www/html/wp-content/plugins/wp-media-folder/class/class-media-folder.php na řádku 1310
PHP Fatal error: Uncaught TypeError: Argument 1 předán do Wp_Media_Folder:
Po změně prvního řádku výše uvedené funkce na "if ($limit > 1500)" webová stránka znovu fungovala.
Mohl byste prosím vysvětlit, jaký je důvod limitu 1000 rekurzivních volání a jak se mu lze vyhnout nebo ho co nejlépe zvýšit (např. bez vlastních změn přímo v kódu pluginu)?
S pozdravem,
vipteam
- strana:
- 1
Na tento příspěvek zatím nebyly učiněny žádné odpovědi.
