Как определить заблокированные функции ПХП?

Статус
В этой теме нельзя размещать новые ответы.
I

iBolit

Прохожие
Как выяснить, какие функции ПХП урезаны на хостинге?Кажется, phpinfo() такую информацию не выдает.
 
Просмотреть выдачу phpinfo() ;) на предмет наличия safemode on и параметры disable_classes и disable_functions.

После этого прочитать в мануале пхп какие функции блокируются при safemode on.
 
Сенк, в самом деле. Как-то я раньше на замечал эти две строчки. Много букав. :)
Вот еще скриптец коротенький, выдает отсортированный список - может, кому пригодится (бывает, phpinfo тоже заблокирована :D ).

PHP:
<?php
error_reporting(E_ALL);
$disabled_functions = ini_get('disable_functions');
if ($disabled_functions!='')
{
$arr = explode(',', $disabled_functions);
sort($arr);
echo 'Disabled functions:<br>';
for ($i=0; $i<count($arr); $i++)
{
echo $i.' - '.$arr[$i].'<br>';
}
}
else
{
echo 'No functions disabled';
}
?>
 
Исчо бывает так, что вроде в пхп все разрешено, но некоторые функции/команды операционной системы заблокированы, поскольку для выполнения их урезаны права доступа или не прописан путь. Пример - по умолчанию после установки пхп путь к сендмылу прописан так: /usr/sbin/sendmail -t -i , но если вместо сендмыла стоит постфикс или еще какая-нить хрень, то естественно отправка мыла из пхп работать не будет. Проверить это нельзя никак иначе чем методом проб исполнения каждой нужной функции или команды.

В Апаче есть директива Options IncludesNoEXEC, которая запрещает выполнение CGI-сценариев в соответствующем контексте, правда я не проверял, как она коррелирует с выполнением пхп функций, поэтому по ней точно сказать не могу.

Если функция phpinfo() заблокирована, то **х вообще такой хостинг, пусть его владельцы своими смешными рожами сами себя и веселят. :D
 
Ага, что-то типа


Вообще говоря, существует возможность разрешить подстановки, но запретить выполнение скриптов:

<Directory /usr/local/etc/httpd/htdocs>
AllowOverride
Options IncludesNoExec
</Directory>

В этом случае отключаются не только скрипты, но и обычные команды, выполняемые из стандартной оболочки (shell). При этом можно разрешить исполнение скриптов самих по себе, но не в качестве вставок.


<Directory /usr/local/etc/httpd/htdocs>
AllowOverride
Options IncludesNoExec ExecCGI
</Directory>

В данной конфигурации исполнение скриптов разрешено, а выполнение подстановки по команде exec запрещено.

фраза какая-то двусмысленная - команды имеются в виду из-под exec
 
На выполнение PHP скриптов директива Options IncludesNoExec никак не влияет
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху