PHP: Ограниченные или недоступные в защищенном режиме функции - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Использование PHP в командной строке Защищенный режим

Last updated: Fri, 26 Jan 2007

view this page in

# Ограниченные или недоступные в защищенном режиме функции

Ниже приведен, вероятно, неполный и, возможно, не вполне корректный список функций, ограниченных в защищенном режиме.

Таблица 42-2. Функции, ограниченные в безопасном режиме

Функция | Ограничения
--- | ---
dbmopen() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
dbase_open() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
filepro() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
filepro_rowcount() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
filepro_retrieve() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
ifx_* | sql_safe_mode ограничения (не путать с safe_mode)
ingres_* | sql_safe_mode ограничения (не путать с safe_mode)
mysql_* | sql_safe_mode ограничения (не путать с safe_mode)
pg_lo_import() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
posix_mkfifo() | Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
putenv() | Подчиняется настройкам the safe_mode_protected_env_vars и safe_mode_allowed_env_vars. Ознакомьтесь с более подробным описанием функции putenv().
move_uploaded_file() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
chdir() | Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
dl() | Эта функция недоступна в безопасном режиме.
backtick operator | Эта функция недоступна в безопасном режиме.
shell_exec() (функция эквивалентна backticks) | Эта функция недоступна в безопасном режиме.
exec() | Вы можете запускать исполняемые файлы, ограниченные деревом каталогов, указанным в safe_mode_exec_dir. Исходя из практических соображений, использовать `..` при указании пути запрещено. Следует заметить, что к аргументу этой функции применяется escapeshellcmd().
system() | Вы можете запускать исполняемые файлы, ограниченные деревом каталогов, указанным в safe_mode_exec_dir. Исходя из практических соображений, использовать `..` при указании пути запрещено. Следует заметить, что к аргументу этой функции применяется escapeshellcmd()
passthru() | Вы можете запускать исполняемые файлы, ограниченные деревом каталогов, указанным в safe_mode_exec_dir. Исходя из практических соображений, использовать `..` при указании пути запрещено. Следует заметить, что к аргументу этой функции применяется escapeshellcmd().
popen() | Вы можете запускать исполняемые файлы, ограниченные деревом каталогов, указанным в safe_mode_exec_dir. Исходя из практических соображений, использовать `..` при указании пути запрещено. Следует заметить, что к аргументу этой функции применяется escapeshellcmd().
fopen() | Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
mkdir() | Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
rmdir() | Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
rename() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
unlink() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
copy() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (Для параметров `source` и `target`).
chgrp() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
chown() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
chmod() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Кроме того, вы не можете устанавливать UID, SGID и sticky-биты.
touch() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.
symlink() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (Замечание: проверка выполняется только для параметра `target`)
link() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (Замечание: проверка выполняется только для параметра `target`)
apache_request_headers() | В защищенном режиме, заголовки, начинающиеся с 'authorization' (независимо от регистра), не возвращаются.
header() | В защищенном режиме, текущий UID скрипта будет добавлен к `realm`-части заголовка `WWW-Authenticate`, если вы его устанавливаете (используется для HTTP-аутентификации)
переменные PHP_AUTH | В защищенном режиме, переменные `PHP_AUTH_USER`, `PHP_AUTH_PW`, и `AUTH_TYPE` недоступны как элементы массива `$_SERVER`. Несмотря на это, вы все еще можете использовать переменную `REMOTE_USER` для идентификации пользователя. (Замечание: актуально только для PHP 4.3.0 и выше)
highlight_file(), show_source() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (Замечание: актуально только для PHP 4.2.1 и выше)
parse_ini_file() | Проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. Проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт. (Замечание: актуально только для PHP 4.2.1 и выше)
set_time_limit() | Не имеет никакого эффекта, если безопасный режим используется
max_execution_time | Не имеет никакого эффекта, если безопасный режим используется
mail() | В защищенном режиме пятый параметр недоступен. (Замечание: актуально только для PHP 4.2.3 и выше)
Любая функция, которая использует `php4/main/fopen_wrappers.c` | Временно не документировано

add a note User Contributed Notes
Ограниченные или недоступные в защищенном режиме функции
bananarama
15-May-2006 01:11
`all file-handling and -management functions are restricted, just in case someones wondering why they're not listed here.
a script can run these functions on files without errors, if the files were created (are owned) by the same UID, the script was created (is owned) by.
example:
you upload a script, it is owned by UID 720. you upload a picture, it is owned by UID 720. the script creates a thumbnail of the picture. the thumb is owned by UID 30 (the server/apache). this makes it impossible (?) to run a gallery script, which checks for newly uploaded pictures in order to create and display thumbs of them if you want to check, if a thumbnail already exists. the script would be owned by UID 720, the thumb by UID 30.
you could upload a script which creates a file (e.g. from a text file) with .php ending. this script would be owned by UID 30 and could access the thumbs, but it couldnt read the upload pictures.
<?
$data = fread(fopen("test.txt", "r"), filesize("test.txt"));
$file = "test.php";
if (!$file_handle = fopen($file,"a")) { echo "Cannot open file"; }
if (!fwrite($file_handle, $data)) { echo "Cannot write to file"; }
fclose($file_handle);
chmod("test.php", 0777);
?>`
zauker
21-Mar-2006 02:57
`The SAFE_MODE handling of glob() needs a checkup for security reasons.
In short - always with SAFE_MODE on:
1) glob() can still fetch all filenames in a directory not owned by the
same UID as the user, if just the first file in the directory (or more
specific, the glob-pattern) happens to be owned by the same user as the
PHP-script.
2a) No warning is raised if glob is used on another owner's directory
and there is no match.
2b) In those cases where SAFE_MODE correctly prohibits glob() from
fetching a list of files, the warning still discloses the first
filename.
Solution: glob() in SAFE_MODE should be restricted in the same way as
opendir() is
see the link http://bugs.php.net/bug.php?id=28932`
Jan
23-Oct-2005 02:46
`It seems that glob and file_exists functions are also restricted in safe-mode.`
lionel at mamane dot lu
31-Mar-2005 05:05
`readfile() is probably also limited by safe mode`
add a note
Использование PHP в командной строке Защищенный режим

Last updated: Fri, 26 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 11:33:19 2007 PST