Přeskočit na hlavní obsah
  Čtvrtek, 7. září 2017
  1 Odpovědi
  2 tisíce návštěv
  předplatit
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::p 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
A
před 8 lety
Ahoj,

děkujeme, že jste nás kontaktovali ohledně tohoto rozšíření.
Je mi líto, ale toto fórum je určeno pouze pro dotazy týkající se předprodeje. S veškerými technickými požadavky nám prosím pošlete tiket (menu Podpora > Podpora tiketů).
Náš zodpovědný vývojář se na to podívá.

S pozdravem,
  • strana:
  • 1
Na tento příspěvek zatím nebyly učiněny žádné odpovědi.