Я хотел бы, чтобы это было лучше задокументировано (см. Php bug # 61233), но из исходного кода похоже, что имя метода для PHP 5.4+ - это "setSecurityPrefs" вместо "setSecurityPreferences", а константа - "XSL_SECPREF_NONE" вместо "XSL_SECPREFS_NONE" (в отличие от того, что вы можете прочитать в комментарии к ошибке # 54446). Хотя я бы предпочел использовать 0 на случай, если они передумают об написании.
Прямо сейчас я пытаюсь что-то вроде этого:
if (version_compare(PHP_VERSION, '5.4', '<')) { $oldval = ini_get('xsl.security_prefs'); if ($oldval != '0') { $oldval = ini_set('xsl.security_prefs', '0'); if ($oldval === false) ;//manage the error } } else $oldval = $xsltproc->setSecurityPrefs(0);
и после преобразования:
if ($oldval != 0 && $oldval != '0') { if (version_compare(PHP_VERSION, '5.4', '<')) ini_set('xsl.security_prefs', $oldval); else $xsltproc->setSecurityPrefs($oldval); }