Functions restricted/disabled by safe mode
This is a still probably incomplete and possibly incorrect listing of the functions limited by safe mode.
Function | Limitations |
---|---|
dbmopen() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. |
dbase_open() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. |
filepro() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. |
filepro_rowcount() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. |
filepro_retrieve() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. |
ifx_* | sql_safe_mode restrictions, (!= safe mode) |
ingres_* | sql_safe_mode restrictions, (!= safe mode) |
mysql_* | sql_safe_mode restrictions, (!= safe mode) |
pg_lo_import() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. |
posix_mkfifo() | Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
putenv() | Obeys the safe_mode_protected_env_vars and safe_mode_allowed_env_vars ini-directives. See also the documentation on putenv() |
move_uploaded_file() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. |
chdir() | Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
dl() | This function is disabled when PHP is running in safe mode. |
backtick operator | This function is disabled when PHP is running in safe mode. |
shell_exec() (functional equivalent of backticks) | This function is disabled when PHP is running in safe mode. |
exec() | You can only execute executables within the safe_mode_exec_dir. For practical reasons it's currently not allowed to have .. components in the path to the executable. escapeshellcmd() is executed on the argument of this function. |
system() | You can only execute executables within the safe_mode_exec_dir. For practical reasons it's currently not allowed to have .. components in the path to the executable. escapeshellcmd() is executed on the argument of this function. |
passthru() | You can only execute executables within the safe_mode_exec_dir. For practical reasons it's currently not allowed to have .. components in the path to the executable. escapeshellcmd() is executed on the argument of this function. |
popen() | You can only execute executables within the safe_mode_exec_dir. For practical reasons it's currently not allowed to have .. components in the path to the executable. escapeshellcmd() is executed on the argument of this function. |
fopen() | Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
mkdir() | Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
rmdir() | Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
rename() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
unlink() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
copy() | Checks whether the files or directories being operated
upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which
the script is operating has the same UID (owner) as the script that is being
executed. (on
source and
target ) |
chgrp() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. |
chown() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. |
chmod() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. In addition, you cannot set the SUID, SGID and sticky bits |
touch() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
symlink() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. (note: only the target is checked) |
link() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. (note: only the target is checked) |
apache_request_headers() | In safe mode, headers beginning with authorization (case-insensitive) will not be returned. |
header() | In safe mode, the uid of the script is added to the realm part of the WWW-Authenticate header if you set this header (used for HTTP Authentication). |
PHP_AUTH variables | In safe mode, the variables PHP_AUTH_USER, PHP_AUTH_PW, and AUTH_TYPE are not available in $_SERVER. Regardless, you can still use REMOTE_USER for the USER. (note: only affected since PHP 4.3.0) |
highlight_file(), show_source() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
parse_ini_file() | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. |
set_time_limit() | Has no effect when PHP is running in safe mode. |
max_execution_time | Has no effect when PHP is running in safe mode. |
mail() | In safe mode, the fifth parameter is disabled. |
session_start() | The owner of a script must be the same as owner of a session.save_path directory if the default files session.save_handler is used. |
All filesystem and stream functions. | Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. (see the safe_mode_include_dir php.ini option. |
English translation
You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.
Thank you in advance.
Document created the 30/01/2003, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/php-rf-features.safe-mode.functions.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.
References
These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.