Autor Zpráva
Acci
Profil
Jak nahradit funkci, například xyz(), pokud je na hostingu z bezpečnostních důvodů zakázaná? Chtěl jsem použít

if(!function_exists('xyz')) {
function xyz() {
...
}
}

ale funkce function_exist vrací TRUE, i pokud je na hostingu zakázaná a PHP zahlásí chybu, protože funkce xyz() už existuje.
xixli
Profil
O nejakej priamej funkcií neviem, ale napadlo ma niečo takéto:

function safeModeFunctionExists($function) {
$arr=explode(",", ini_get("disable_functions"));
$arr=array_map("trim", $arr); // odstranime medzery: function, function => array("function", " function")
return(in_array($function, $arr));
}

Nie je to síce nič moc, ale dá sa to použiť :-) Samozrejme je nutná podpora ini_get, čo môže predstavovať problém.
mila
Profil
Nevím jakou funkci potřebuješ, ale něco mi říká, že když ji někdo zakázal, tak k tomu měl důvod. Pokud ji je možné nahradit, tak ji zakazoval zbytečně.

Jelikož hosting neměníš jako ponožky, tak proč prostě - když přijdeš na nový hosting - jen neodkomentovat správnou část kódu?
Acci
Profil
xixli
To by asi nic neřešilo, protože pak mi to vypíše
Fatal error: Cannot redeclare xyb()...
llook
Profil
Asi budeš muset najít a nahradit všechna volání zakázané funkce za nějakou vlastní funkci. Ta může vypadat nějak takhle:
function mojeXyz() {

if(!function_exists('xyz')) {
return xyz();
} else {
// ...
}
}
xixli
Profil
Acci >

if(!safeModeFunctionExists('xyz')) {
eval('
function xyz() {
...
}
');
}

Ale najlepšie je sa tomu vyhnúť. Skús len tak námatkovo povedať, o ktoré funkcie ti vlastne ide.
llook
Profil
xixli
Jenže ona ta funkce existuje (takže ji nelze předefinovat), ale je zakázaná direktivou disable_functions (takže ji nelze použít).

Pokud třeba na WZ udělám tohle:
<?php eval('function exec() {}'); ?>
Tak se mi vypíše: Fatal error: Cannot redeclare exec() in /3w/wz.cz/l/llook/test.php(6) : eval()'d code on line 1
Acci
Profil
Díky vám oběma, nakonec pomohlo zkombinovat obě řešení
Anonymní
Profil *
[url=http://neco.cz]Text odkazu[/url][img][/img]
[pre][/pre][i][/i][b][/b][url=http://neco.cz]Text odkazu[/url][img][/img][img][/img][img][/img]
[pre][/pre]
[pre][/pre]
[pre][/pre]
[pre][/pre][i][/i][i][/i][b][/b][i][/i]
[pre][/pre]
[pre][/pre]
[pre][/pre]
[pre][/pre]
[pre][/pre]
[pre][/pre]
[pre][/pre]
[pre][/pre]
[pre][/pre]
Toto téma je uzamčeno. Odpověď nelze zaslat.

0