-
#1
default_charset в php.ini
Народ подскажите плз, как в этом параметре (default_charset) прописывать виндовую кодировку. Если koi8-r так скорее всего и пишется, то как прописывать win-1251 или cp1251, и как юникод? И вообще можно ли это делать?
Заранее спасибо
RomikChef
Guest
-
#2
ЧЕГОООО?!
какой еще дефолт чарсет в php.ini ???
-
#3
>И вообще можно ли это делать?
Для php-gtk можно делать.
-
#4
2: RomikChef
; As of 4.0b4, PHP always outputs a character encoding by default in
; the Content-type: header. To disable sending of the charset, simply
; set it to be empty.
;
; PHP’s built-in default is text/html
default_mimetype = «text/html»
default_charset = «windows-1251»
2: hussar
А зачем оно тебе вообще надо? Это только лишь определяет кодировку по умолчанию, если ты сам не сделал этого при помощи META или соотв. хэдера. Т.ч. чем мучать php.ini, выдай любыми подручными средствами php (да хоть echo) META HTTP-EQUIV=»Content-Type» CONTENT=»text/html; charset=windows-1251″ или, для юникода, charset=utf-8.
Apache Manager
Guest
-
#5
Очень рото все , если юзаешь апач, то в файле .htaccess
пропиши вот это
AddDefaultCharset windows-1251 тока в той папке де у тя скрипты лежат =)
-
#6
Ок, спасибо за объяснения Попробую сделать. А надо мне это для того, что я пытаюсь понять в каком месте у меня сбиваются кодировки. Есть программа которая через форму которая передает данные в MS SQL SERVER 2000, данные передаются и даже выводятся обратно, но в самой базе при просмотре таблиц — это нечитаемые кракозябры , и иногда при выводе тоже некоторые кирилические буквы заменяются на латинские. Вот такая проблема и я не могу понят в чем тут дело то-ли в базе то ли в кодировке страницы, то-ли в PHP.
Если кто-то сталкивался с подобной проблемой, буду очень благодарен за совет
This list includes the core php.ini directives you can set to
configure your PHP setup. Directives handled by extensions are listed
and detailed at the extension documentation pages respectively;
Information on the session directives for example can be found at the
sessions page.
Note:
The defaults listed here are used when php.ini is not loaded; the values for the production and development php.ini may vary.
Language Options
Name | Default | Changeable | Changelog |
---|---|---|---|
short_open_tag | «1» | PHP_INI_PERDIR | |
precision | «14» | PHP_INI_ALL | |
serialize_precision | «-1» | PHP_INI_ALL | Prior to PHP 7.1.0, the default value was 17. |
disable_functions | «» | PHP_INI_SYSTEM only | |
disable_classes | «» | php.ini only | |
exit_on_timeout | «» | PHP_INI_ALL | |
expose_php | «1» | php.ini only | |
hard_timeout | «2» | PHP_INI_SYSTEM | Available as of PHP 7.1.0. |
zend.exception_ignore_args | «0» | PHP_INI_ALL | Available as of PHP 7.4.0 |
zend.multibyte | «0» | PHP_INI_ALL | |
zend.script_encoding | NULL | PHP_INI_ALL | |
zend.detect_unicode | NULL | PHP_INI_ALL | |
zend.signal_check | «0» | PHP_INI_SYSTEM | |
zend.assertions | «1» | PHP_INI_ALL with restrictions | |
zend.exception_string_param_max_len | «15» | PHP_INI_ALL | Available as of PHP 8.0.0. |
Here’s a short explanation of
the configuration directives.
-
short_open_tag
bool -
Tells PHP whether the short form (
<? ?>
)
of PHP’s open tag should be allowed. If you want to use PHP in
combination with XML, you can disable this option in order to
use<?xml ?>
inline. Otherwise, you
can print it with PHP, for example:<?php echo '<?xml
. Also, if disabled, you must use the
version="1.0"?>'; ?>
long form of the PHP open tag (<?php ?>
).Note:
This directive does not affect the shorthand
<?=
, which is always available. -
precision
int -
The number of significant digits displayed in floating point numbers.
-1
means that an enhanced algorithm for rounding
such numbers will be used.
-
serialize_precision
int -
The number of significant digits stored while serializing floating point numbers.
-1
means that an enhanced algorithm for rounding
such numbers will be used.
-
expose_php
bool -
Exposes to the world that PHP is installed on the server, which includes the
PHP version within the HTTP header (e.g., X-Powered-By: PHP/5.3.7). -
disable_functions
string -
This directive allows you to disable certain functions. It takes
on a comma-delimited list of function names.Only internal functions can
be disabled using this directive. User-defined functions
are unaffected.This directive must be set in php.ini For example, you
cannot set this in httpd.conf. -
disable_classes
string -
This directive allows you to disable certain classes. It takes
on a comma-delimited list of class names.
This directive must be set in php.ini For example, you
cannot set this in httpd.conf.
-
zend.assertions
int -
When set to1
, assertion code will be generated and
executed (development mode). When set to0
,
assertion code will be generated but it will be skipped (not executed)
at runtime. When set to-1
, assertion code will not
be generated, making the assertions zero-cost (production mode).
Note:
If a process is started in production mode, zend.assertions
cannot be changed at runtime, since the code for assertions was not generated.If a process is started in development mode, zend.assertions
cannot be set to-1
at runtime. -
zend.exception_string_param_max_len
int -
The maximum length of string function arguments in stringified stack traces.
Must range between"0"
and"1000000"
.
-
hard_timeout
int -
When the timeout set in max_execution_time
has been hit, the PHP runtime will tear down resources gracefully. If
something gets stuck while this happens, the hard timeout will tick
for the set amount of seconds. When the hard timeout is hit, PHP will
exit ungracefully. When set to 0, the hard timeout will never activate.When PHP stops from a hard timeout, it will look something like this:
Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0
-
zend.exception_ignore_args
bool -
Excludes arguments from stack traces generated from exceptions.
-
zend.multibyte
bool -
Enables parsing of source files in multibyte encodings. Enabling zend.multibyte
is required to use character encodings like SJIS, BIG5, etc that contain special
characters in multibyte string data. ISO-8859-1 compatible encodings like UTF-8,
EUC, etc do not require this option.Enabling zend.multibyte requires the mbstring extension to be available.
-
zend.script_encoding
string -
This value will be used unless a
declare(encoding=…)
directive appears at the top of the script. When ISO-8859-1 incompatible encoding
is used, both zend.multibyte and zend.script_encoding must be used.Literal strings will be transliterated from zend.script_encoding to
mbstring.internal_encoding, as if
mb_convert_encoding() would have been called. -
zend.detect_unicode
bool -
Check for BOM (Byte Order Mark) and see if the file contains valid
multibyte characters.
This detection is performed before processing of
__halt_compiler().
Available only in Zend Multibyte mode. -
zend.signal_check
bool -
To check for replaced signal handlers on shutdown.
-
exit_on_timeout
bool -
This is an Apache1 mod_php-only directive that forces an Apache child to exit if a PHP execution timeout occurred.
Such a timeout causes an internal longjmp() call in Apache1 which can leave some extensions in an inconsistent
state. By terminating the process any outstanding locks or memory will be cleaned up.
Resource Limits
Name | Default | Changeable | Changelog |
---|---|---|---|
memory_limit | «128M» | PHP_INI_ALL |
Here’s a short explanation of
the configuration directives.
-
memory_limit
int -
This sets the maximum amount of memory in bytes that a script
is allowed to allocate. This helps prevent poorly written
scripts for eating up all available memory on a server. Note that
to have no memory limit, set this directive to-1
.When an int is used, the
value is measured in bytes. Shorthand notation, as described
in this FAQ, may also be used.
See also: max_execution_time.
Performance Tuning
Name | Default | Changeable | Changelog |
---|---|---|---|
realpath_cache_size | «4M» | PHP_INI_SYSTEM | Prior to PHP 7.0.16 and 7.1.2, the default was "16K" |
realpath_cache_ttl | «120» | PHP_INI_SYSTEM |
Note:
Using open_basedir will
disable the realpath cache.
Here’s a short explanation of
the configuration directives.
-
realpath_cache_size
int -
Determines the size of the realpath cache to be used by PHP. This
value should be increased on systems where PHP opens many files, to
reflect the quantity of the file operations performed.The size represents the total number of bytes in the path strings
stored, plus the size of the data associated with the cache entry. This
means that in order to store longer paths in the cache, the cache size
must be larger. This value does not directly control the number of
distinct paths that can be cached.The size required for the cache entry data is system dependent.
-
realpath_cache_ttl
int -
Duration of time (in seconds) for which to cache realpath information
for a given file or directory. For systems with rarely changing files,
consider increasing the value.
Data Handling
Name | Default | Changeable | Changelog |
---|---|---|---|
arg_separator.output | «&» | PHP_INI_ALL | |
arg_separator.input | «&» | PHP_INI_PERDIR | |
variables_order | «EGPCS» | PHP_INI_PERDIR | |
request_order | «» | PHP_INI_PERDIR | |
auto_globals_jit | «1» | PHP_INI_PERDIR | |
register_argc_argv | «1» | PHP_INI_PERDIR | |
enable_post_data_reading | «1» | PHP_INI_PERDIR | |
post_max_size | «8M» | PHP_INI_PERDIR | |
auto_prepend_file | NULL | PHP_INI_PERDIR | |
auto_append_file | NULL | PHP_INI_PERDIR | |
default_mimetype | «text/html» | PHP_INI_ALL | |
default_charset | «UTF-8» | PHP_INI_ALL | |
input_encoding | «» | PHP_INI_ALL | |
output_encoding | «» | PHP_INI_ALL | |
internal_encoding | «» | PHP_INI_ALL |
Here’s a short explanation of
the configuration directives.
-
arg_separator.output
string -
The separator used in PHP generated URLs to separate arguments.
-
arg_separator.input
string -
List of separator(s) used by PHP to parse input URLs into variables.
Note:
Every character in this directive is considered as separator!
-
variables_order
string -
Sets the order of the EGPCS (
E
nvironment,
G
et,P
ost,
C
ookie, andS
erver) variable
parsing. For example, if variables_order
is set to"SP"
then PHP will create the
superglobals $_SERVER and
$_POST, but not create
$_ENV, $_GET, and
$_COOKIE. Setting to «» means no
superglobals will be set.Warning
In both the CGI and FastCGI SAPIs,
$_SERVER is
also populated by values from the environment;S
is always equivalent toES
regardless of the
placement ofE
elsewhere in this directive.Note:
The content and order of
$_REQUEST is also
affected by this directive. -
request_order
string -
This directive describes the order in which PHP registers GET, POST
and Cookie variables into the _REQUEST array. Registration is done
from left to right, newer values override older values.If this directive is not set, variables_order is used for
$_REQUEST contents.Note that the default distribution php.ini files does not contain
the'C'
for cookies, due to security concerns. -
auto_globals_jit
bool -
When enabled, the SERVER, REQUEST, and ENV variables are created when they’re
first used (Just In Time) instead of when the script starts. If these
variables are not used within a script, having this directive on will
result in a performance gain.Warning
Usage of SERVER, REQUEST, and ENV variables is checked during the compile time
so using them through e.g. variable variables will
not cause their initialization. -
register_argc_argv
bool -
Tells PHP whether to declare the argv & argc variables
(that would contain the GET information).
See also command line.
-
enable_post_data_reading
bool -
Disabling this option causes $_POST and
$_FILES not to be populated.
The only way to read postdata will then be through the
php://input stream wrapper.
This can be useful to proxy requests or to process
the POST data in a memory efficient fashion.
-
post_max_size
int -
Sets max size of post data allowed. This setting also affects
file upload. To upload large files, this value must be larger
than upload_max_filesize.
Generally speaking,
memory_limit should be
larger thanpost_max_size
.
When an int is used, the
value is measured in bytes. Shorthand notation, as described
in this FAQ, may also be used.
If the size of post data is greater than post_max_size, the
$_POST and $_FILES
superglobals
are empty. This can be tracked in various ways, e.g. by passing the
$_GET variable to the script processing the data,
i.e.<form action="edit.php?processed=1">
,
and then checking if $_GET[‘processed’] is set.
Note:
PHP allows shortcuts for byte values, including K (kilo), M (mega)
and G (giga). PHP will do the conversions automatically if you
use any of these. Be careful not to exceed the 32 bit signed integer
limit (if you’re using 32bit versions) as it will cause your script
to fail.Changelog for
post_max_size
Version Description 5.3.4 post_max_size
= 0 will not disable the limit when the content
type is application/x-www-form-urlencoded or is not registered with PHP.5.3.2 , 5.2.12 Allow unlimited post size by setting post_max_size
to 0. -
auto_prepend_file
string -
Specifies the name of a file that is automatically parsed
before the main file. The file is included as if it was
called with the require function, so
include_path is used.The special value
none
disables auto-prepending. -
auto_append_file
string -
Specifies the name of a file that is automatically parsed
after the main file. The file is included as if it was
called with the require function, so
include_path is used.The special value
none
disables auto-appending.Note:
If the script is terminated with exit(),
auto-append will not occur. -
default_mimetype
string -
By default, PHP will output a media type using the Content-Type header.
To disable this, simply set it to be empty.PHP’s built-in default media type is set to text/html.
-
default_charset
string -
«UTF-8» is the default value and its value is used
as the default character encoding for
htmlentities(),
html_entity_decode() and
htmlspecialchars() if the
encoding
parameter is omitted. The value of
default_charset
will also be used to set the
default character set for iconv
functions if the
iconv.input_encoding
,
iconv.output_encoding
and
iconv.internal_encoding
configuration options are unset, and for
mbstring functions if the
mbstring.http_input
mbstring.http_output
mbstring.internal_encoding
configuration option is unset.All versions of PHP will use this value as the charset within the
default Content-Type header sent by PHP if the header isn’t overridden
by a call to header().Setting
default_charset
to an empty value is
not recommended. -
input_encoding
string -
This setting is used for multibyte modules
such as mbstring and iconv. Default is empty. -
output_encoding
string -
This setting is used for multibyte modules
such as mbstring and iconv. Default is empty. -
internal_encoding
string -
This setting is used for multibyte modules
such as mbstring and iconv. Default is empty. If empty,
default_charset is used.
Paths and Directories
Name | Default | Changeable | Changelog |
---|---|---|---|
include_path | «.;/path/to/php/pear» | PHP_INI_ALL | |
open_basedir | NULL | PHP_INI_ALL | |
doc_root | NULL | PHP_INI_SYSTEM | |
user_dir | NULL | PHP_INI_SYSTEM | |
user_ini.cache_ttl | «300» | PHP_INI_SYSTEM | |
user_ini.filename | «.user.ini» | PHP_INI_SYSTEM | |
extension_dir | «/path/to/php» | PHP_INI_SYSTEM | |
extension | NULL | php.ini only | |
zend_extension | NULL | php.ini only | |
cgi.check_shebang_line | «1» | PHP_INI_SYSTEM | |
cgi.discard_path | «0» | PHP_INI_SYSTEM | |
cgi.fix_pathinfo | «1» | PHP_INI_SYSTEM | |
cgi.force_redirect | «1» | PHP_INI_SYSTEM | |
cgi.nph | «0» | PHP_INI_SYSTEM | |
cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | |
cgi.rfc2616_headers | «0» | PHP_INI_ALL | |
fastcgi.impersonate | «0» | PHP_INI_SYSTEM | |
fastcgi.logging | «1» | PHP_INI_SYSTEM |
Here’s a short explanation of
the configuration directives.
-
include_path
string -
Specifies a list of directories where the
require, include,
fopen(), file(),
readfile() and file_get_contents()
functions look for files. The format is like the system’s
PATH environment variable: a list of directories
separated with a colon in Unix or semicolon in Windows.PHP considers each entry in the include path separately when looking for
files to include. It will check the first path, and if it doesn’t find
it, check the next path, until it either locates the included file or
returns with an
E_WARNING
or anE_ERROR
.
You may modify or set your include path at runtime using
set_include_path().Example #1 Unix include_path
include_path=".:/php/includes"
Example #2 Windows include_path
include_path=".;c:phpincludes"
Using a
.
in the include path allows for
relative includes as it means the current directory. However,
it is more efficient to explicitly useinclude
than having PHP always check the current
'./file'
directory for every include.Note:
ENV
variables are also accessible in .ini files.
As such it is possible to reference the home directory using
${LOGIN}
and${USER}
.Environment variables may vary between Server APIs as those environments
may be different.Example #3 Unix include_path using ${USER} env variable
include_path = ".:${USER}/pear/php"
-
open_basedir
string -
Limit the files that can be accessed by PHP to the specified
directory-tree, including the file itself.When a script tries to access the filesystem, for example using
include, or fopen(), the location of the file
is checked.
When the file is outside the specified directory-tree, PHP will refuse to access it.
All symbolic links are resolved, so it’s not possible to avoid this restriction
with a symlink. If the file doesn’t exist then the symlink couldn’t be
resolved and the filename is compared to (a resolved) open_basedir.open_basedir can affect more than just filesystem functions; for example
ifMySQL
is configured to usemysqlnd
drivers,
LOAD DATA INFILE
will be affected by open_basedir.
Much of the extended functionality of PHP usesopen_basedir
in this way.The special value
.
indicates that the working directory of the script will be used as the
base-directory. This is, however, a little dangerous as the working directory
of the script can easily be changed with chdir().In httpd.conf, open_basedir can be turned off
(e.g. for some virtual hosts)
the same way as
any other configuration directive with «php_admin_value open_basedir
«.
noneUnder Windows, separate the directories with a semicolon. On all
other systems, separate the directories with a colon. As an Apache
module, open_basedir paths from parent directories are now
automatically inherited.The restriction specified with open_basedir is a
directory name, not a prefix.The default is to allow all files to be opened.
Note:
open_basedir can be tightened at run-time. This means
that if open_basedir is set to/www/
in php.ini
a script can tighten the configuration to
/www/tmp/
at run-time with
ini_set(). When listing several directories, you
can use thePATH_SEPARATOR
constant as a separator
regardless of the operating system.Note:
Using open_basedir will set realpath_cache_size
to0
and thus disable the realpath cache.Caution
open_basedir
is just an extra safety net, that is in no way
comprehensive, and can therefore not be relied upon when security is needed. -
doc_root
string -
PHP’s «root directory» on the server. Only used if
non-empty.
If PHP was not compiled with FORCE_REDIRECT, you should
set doc_root if you are running PHP as a CGI under any web
server (other than IIS). The alternative is to use thecgi.force_redirect configuration below.
-
user_ini.cache_ttl
int -
user_ini.filename
string -
user_dir
string -
The base name of the directory used on a user’s home directory for PHP
files, for example public_html
. -
extension_dir
string -
In what directory PHP should look for dynamically loadable
extensions. It is recommended to specify an absolute path. See also: enable_dl,
and dl(). -
extension
string -
Which dynamically loadable extensions to load when PHP starts up.
-
zend_extension
string -
Name of dynamically loadable Zend extension (for example
XDebug) to load when PHP starts up. -
cgi.check_shebang_line
bool -
Controls whether CGI PHP checks for line starting
with#!
(shebang) at the top of the running script.
This line might be needed if the script support running both as
stand-alone script and via PHP CGI. PHP in
CGI mode skips this line and ignores its content if
this directive is turned on. -
cgi.discard_path
bool -
If this is enabled, the PHP CGI binary can safely be placed outside of
the web tree and people will not be able to circumvent .htaccess security. -
cgi.fix_pathinfo
bool -
Provides real
PATH_INFO
/
PATH_TRANSLATED
support for CGI.
PHP’s previous behaviour was to setPATH_TRANSLATED
toSCRIPT_FILENAME
, and to not grok what
is. For more information on
PATH_INFO
PATH_INFO
, see the CGI specs.
Setting this to1
will cause PHP
CGI to fix its paths to conform to the spec. A
setting of zero causes PHP to behave as before. It is turned on by
default. You should fix your scripts to use
SCRIPT_FILENAME
rather than
PATH_TRANSLATED
. -
cgi.force_redirect
bool -
cgi.force_redirect is necessary to provide security running PHP as a
CGI under most web servers. Left undefined, PHP
turns this on by default. You can turn it off at your own
risk.Note:
Windows Users: When using IIS this option must
be turned off. For OmniHTTPD or Xitami the same applies. -
cgi.nph
bool -
If cgi.nph is enabled it will force cgi to always sent Status: 200 with
every request. -
cgi.redirect_status_env
string -
If cgi.force_redirect is turned on, and you are not running under
Apache or Netscape (iPlanet) web servers, you may
need to set an environment variable name that PHP will look for to
know it is OK to continue execution.Note:
Setting this variable may cause security issues,
know what you are doing first. -
Tells PHP what type of headers to use when sending HTTP response
code. If it’s set to 0, PHP sends a » RFC 3875
«Status:» header that is supported by Apache and other web servers. When this option
is set to 1, PHP will send » RFC 2616 compliant
headers.If this option is enabled, and you are running PHP in a CGI environment (e.g. PHP-FPM)
you should not use standard RFC 2616 style HTTP status response headers, you should
instead use their RFC 3875 equivalent e.g. instead of header(«HTTP/1.0 404 Not found»);
you should use header(«Status: 404 Not Found»);Leave it set to 0 unless you know what you’re doing.
-
fastcgi.impersonate
string -
FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
security tokens of the calling client. This allows IIS to define the
security context that the request runs under. mod_fastcgi under Apache
does not currently support this feature (03/17/2002)
Set to 1 if running under IIS. Default is zero. -
fastcgi.logging
bool -
Turns on SAPI logging when using FastCGI. Default is
to enable logging.
File Uploads
Name | Default | Changeable | Changelog |
---|---|---|---|
file_uploads | «1» | PHP_INI_SYSTEM | |
upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
max_input_nesting_level | 64 | PHP_INI_PERDIR | |
max_input_vars | 1000 | PHP_INI_PERDIR | |
upload_max_filesize | «2M» | PHP_INI_PERDIR | |
max_file_uploads | 20 | PHP_INI_PERDIR |
Here’s a short explanation of
the configuration directives.
-
file_uploads
bool -
Whether or not to allow HTTP
file uploads. See also the
upload_max_filesize,
upload_tmp_dir, and
post_max_size directives. -
upload_tmp_dir
string -
The temporary directory used for storing files when doing
file upload. Must be writable by whatever user PHP
is running as. If not specified PHP will use the system’s default.If the directory specified here is not writable, PHP falls back to
the system default temporary directory. If
open_basedir is on, then
the system default directory must be allowed for an upload to
succeed. -
upload_max_filesize
int -
The maximum size of an uploaded file.
post_max_size must be larger than this value.
When an int is used, the
value is measured in bytes. Shorthand notation, as described
in this FAQ, may also be used.
-
max_file_uploads
int -
The maximum number of files allowed to be uploaded simultaneously.
Upload fields left blank on submission do not
count towards this limit.
General SQL
Name | Default | Changeable | Changelog |
---|---|---|---|
sql.safe_mode | «0» | PHP_INI_SYSTEM | Removed as of PHP 7.2.0 |
Here’s a short explanation of
the configuration directives.
-
sql.safe_mode
bool -
If turned on, database connection functions that specify default values
will use those values in place of any user-supplied arguments. For details
on the default values, see the documentation for the relevant connection
functions.Warning
This feature has been REMOVED as of PHP 7.2.0.
Windows Specific
Name | Default | Changeable | Changelog |
---|---|---|---|
windows.show_crt_warning | «0» | PHP_INI_ALL |
Here’s a short explanation of
the configuration directives.
-
windows.show_crt_warning
bool -
This directive shows the Windows CRT warnings when enabled.
csg at DEL_THISdiatom dot de ¶
17 years ago
Starting with PHP 4.4.0 (at least PHP version 4.3.10 did have old, documented behaviour) interpretation of value of "session.save_path" did change in conjunction with "save_mode" and "open_basedir" enabled.
Documented ( http://de.php.net/manual/en/ref.session.php#ini.session.save-path ):
Values of "session.save_path" should or may be **without** ending slash.
For instance:
<?php
// Valid only *before* PHP 4.4.0:
ini_set( "session.save_path", "/var/httpd/kunde/phptmp" );
?> will mean:
The directory "/var/httpd/kunde/phptmp/" will be used to write data and therefore must be writable by the web server.
Starting with PHP 4.4.0 the server complains that "/var/httpd/kunde/" is not writable.
Solution: Add an ending slash in call of ini_set (or probably whereever you set "session.save_path"), e.g.:
<?php
// Note the slash on ".....phptmp/":
ini_set( "session.save_path", "/var/httpd/kunde/phptmp/" );
?>
Hope, that does help someone.
Simone Pellegatta ¶
2 years ago
Be careful while using auto_prepend_file.
When the custom exception handler, set by set_exception_handler(), handles an uncaught exception, it interrupts the execution of every script.
If the script with the unhandled exception has been automatically prepended or included by an automatically prepended script, however, the main script will continue running anyway.
This could cause several issues: when we think that throwing an exception would automatically interrupt the current application, a whole chunk of code is going to run anyway.
diamondeagle at webmail dot co dot za ¶
3 years ago
Note regarding the upload_tmp_dir setting and UNC Paths:
When using PHP on Windows OS and IIS FastCGI, if you need to use a UNC path to a folder on a network drive for the upload_tmp_dir setting then you must use three characters at the front of the UNC path.
Windows and PHP use the first slash as an escape character, so if you only use two slashes then it passes a UNC path with just one backslash. That is not valid for UNC paths and you many experience problems when uploading files, such as errors saying that "PHP is missing a temporary folder".
Correct:
upload_tmp_dir = "\pathtoyourfolder"
Incorrect:
upload_tmp_dir = "\pathtoyourfolder"
Anton Bannikov ¶
2 years ago
I had a problem with 'open_basedir =' string in php.ini. This string was writtren in VirtualHost Directory directive of Apache2 and successfully rewrote the same php.ini setting! It happened with VestaCP, but I think, it's a common way. Goog luck!
andre dot wetter at myelco dot ch ¶
1 year ago
If you use Microsoft IIS Windows and want to use open_basedir restrictions with multiple dirs you have to set them into single quotes in the main config xml file of IIS (C:WindowsSystem32inetsrvconfigapplicationHost.config). Works fine in IIS 10.
Multiple files with single quotes and ; for windows:
"C:phpphp-cgi.exe|-d open_basedir='C:WindowsTemp;D:mywebsite1'"
Only one dir works fine without single quotes:
"C:phpphp-cgi.exe|-d open_basedir=D:mywebsite1"
In my main config xml file of IIS there are 2 nodes to set per website and the definitions have to be equal:
configurationLocationsystem.webServerhandlersadd
configurationsystem.webServerfastCgi
fernandobasso dot br at gmail dot com ¶
6 years ago
This might help in case someone happens to maintain old applications with a charset other than utf-8.
According to the docs, you can override the default charset if you use `header()`.
Suppose php.ini sets the default_charset to "UTF-8", but you need a legacy charset, like ISO-8859-1.
Still,
<?php header('Content-Type: text/html; Charset=ISO-8859-1'); ?>
would not override the charset, just add it as well and the result
was a response header like (note the two charsets):
Content-Type:"text/html; Charset=ISO-8859-1;charset=UTF-8"
I found it strange the default one as `charset` with a lowercase `c`
as opposed to my custom charset with an uppercase `C`.
What solved was to _override_ the charset using all lowercase letters
as well for the word “charset”:
<?php header('content-type: text/html; charset=ISO-8859-1'); ?>
Then, the double charset from the response headers disappeared, and only the single, custom charset remained.
benjamin at chazelle dot pro ¶
12 days ago
With auto_globals_jit enabled, filter functions (filter_has_var, filter_input...) do not work with INPUT_SERVER and INPUT_ENV because they are not considered as static uses of $_SERVER and $_ENV.
The workaround is to use these global variables directly.
dougal at gunters dot org ¶
6 years ago
It appears that if you use both the 'include_path' directives and 'open_basedir', that file searches will hit the include path *first*, before local files. But if 'open_basedir' is not in use, then local files are found first. For example, suppose you have code in '/var/www/myfile.php' which does:
<?php
require_once('config.php');
?>
Further, assume that there is a local file '/var/www/config.php', and there is also a file '/var/local/php/config.php'.
Next, if your php.ini has:
include_path = /var/local/php/
Normally, this would look for '/var/www/config.php' first, and if not found, then it would try '/var/local/php/config.php'.
But if you also have this in php.ini:
open_basedir = /var/www/:/var/local/php/
Then the require would reverse the order of the search, and load '/var/local/php/config.php', even when the local 'config.php' file exists.
Furthermore, if include_path contains directories not in open_basedir, you can end up with a fatal error. For example, change the directive to:
open_basedir = /var/www/:/var/local/includes/php/
Now the require will first find '/var/local/php/config.php' from the include_path, try to include it, but be unable to because of the open_basedir restrictions.
rlammers at linuxmail dot org ¶
12 years ago
This is a possible solution for a problem which seems to be a php-ini-problem but is not.
If a $_POST is used with large fields e.g. textarea's with more than 120kb characters php returns a blank screen, even if the max_post_size is 8M.
This problem may be caused by an apache-module SecFilter.
Adding the following lines to the .htaccess solves the problem.
SecFilterEngine Off
SecFilterScanPOST Off
I know this is not a php-issue, but i'm still posting it here since it looks like it is a php-problem and I did not find any sites or forums offering this solution.
mrok at mrok dot com ¶
13 years ago
Note that on some Unix systems (i.e. PHP 5.1.6 on Centos 5.2) include_path in php.ini should NOT be quoted.
For example, instead of
include_path='.:/usr/share/php'
use
include_path=.:/usr/share/php
Using quotes does not cause any error message, but all of your require_once() directives will fail (indicating that file could not be opened) - unless full path to target file is provided.
alaa morad ¶
4 years ago
add enctype="multipart/form-data" to your <form> tag or it will not upload any file even if file_uploads=on
ex:
<form method="POST" action="upload. php" enctype="multipart/form-data">
// form contents
</form>
leo at korfu dot cz ¶
16 years ago
"If the size of post data is greater than post_max_size..."
It seems that a more elegant way is comparison between post_max_size and $_SERVER['CONTENT_LENGTH']. Please note that the latter includes not only size of uploaded file plus post data but also multipart sequences. Leo
amolitor at molitor-design dot com ¶
12 years ago
Amusingly, the include_path logically includes the current directory of the running file as the last entry all the time anyways, so part of the business about shoving "." into the include_path is spurious -- it's "there" on the end all the time, at least in the 5.2.12 source (see main/fopen_wrappers.c around line 503).
This one had me goin' for a while.
AntonioK ¶
11 years ago
Note that there is no way to disable eval() work by using disable_functions directive, because eval() is a language construct and not a function.
Many people advise to disable such potentially-insecure functions like system(), exec(), passthru(), eval() and so on in php.ini when not running in safe mode, but eval() would still work even it listed in disable_functions.
kghbln ¶
11 years ago
Adding multiple directories to open_basedir:
open_basedir = "/var/www/htdocs/:/var/www/tmp/" adds both paths /var/www/htdocs/ and /var/www/tmp/. Do not forget the trailing slash, otherwise the last directory will be considered as a prefix (< 5.3.4).
On Windows you use ; as the seperator.
iko at vision dot sk ¶
10 years ago
auto_globals_jit setting is also affecting $_REQUEST superglobal in 5.3 It is not explicitly stated in documentation.
Adam ¶
6 years ago
Remember that `open_basedir` restriction does not affect exec functions. As long as you do not disable exec functions (see `disable_functions`, users will be able to use `exec("/bin/cat [...]")` to access sensitive world readable files.
bohwaz ¶
4 months ago
Please be advised that setting a large post_max_size or upload_max_filesize for a complete server or a complete virtual host is not a good idea as it may lead to increased security risks.
The risk is that an attacker may send very large POST requests and overloading your server memory and CPU as it has to parse and process those requests before handling them to your PHP script.
So it's best to limit changing this setting to some files or directories. For example if I want to /admin/files/ and /admin/images/ I can use:
<If "%{REQUEST_URI} =~ m!^/admin/(files|images)/! && -n %{HTTP_COOKIE}">
php_value post_max_size 256M
php_value upload_max_filesize 256M
</If>
I also require the request to have a cookie to avoid basic attacks. This will not protect you against attacks coming from non-authenticated users, but may delay any attack.
This setting can be used in Apache server configuration files, and .htaccess files as well.
michael dot buergi at gmx dot net ¶
9 years ago
the ini-setting "detect_unicode" is indeed "zend.detect_unicode" (according to the phpinfo of my 5.4.4)
abc500x500 at gmail dot com ¶
5 years ago
Please illuminate this:
memory_limit=128mb meaning which?
1-per script only then if in a moment 1000 user request php script maximum only 128mb of server ram use6 by script.
2-per script + per user if in a moment 1000 user request a php script about 1000*128mb=128gb ram use by script.
Thanks
Некорректное отображение текста сайтов на PHP версии 5.6 и выше
07 сентября 2016
С введением новых серверов с версией PHP по умолчанию 5.6, к нам стали обращаться клиенты с проблемой отображения сайтов в кодировке WINDOWS-1251. Решение проблемы достаточно простое.
Несмотря на добавление в файл .htaccess кодировки по умолчанию для Apache и указанием кодировки в мета-тегах HTML, проблема не решалась. В заголовках от сервера приходил ответ с UTF-8 и браузер выбирал его.
# Кодировка по умолчанию в файле .htaccess AddDefaultCharset windows—1251 |
# Мета-тег в HTML коде страницы <meta http—equiv=«Content-Type» content=«text/html; charset=windows-1251»/> |
# Заголовок приходящий от сервера Content—Type:text/html; charset=utf—8 |
Проблема появилась из-за изменения кодировки по умолчанию в PHP, начиная с версии 5.6: http://php.net/manual/ru/ini.core.php#ini.default-charset, теперь она жестко задана в UTF-8, а в более ранних версиях просто не задавалась и её можно было легко устанавливать через мета-тег или файл .htaccess
Решением проблемы является добавление строчки в файл .htaccess, которая меняет кодировку на windows-1251:
# Установка кодировки для PHP php_value default_charset windows—1251 |
Данной проблеме подвержены все сайты, кодировка которых отличается от UTF-8 и скрипт в процессе работы не устанавливает параметр default_charset. К нам в основном обращаются с проблемой после установки сайтов на DLE (данная CMS работает в windows-1251).
Если Вы ищете тестовый хостинг для сайта wordpress, то LITE.HOST это то, что Вам нужно. Мы также оказываем услуги по хостингу php и не только. Переходите в раздел «Хостинг» и выбирайте удобный для Вас тариф.
Содержание
- Директива Default_charset
- Кодировка windows 1251 в сайтостроении
- Кодировка windows 1251 в html
- Кодировка windows 1251 в PHP
- Кодировка windows 1251 в htaccess
- default_charset в php.ini
- hussar
- RomikChef
- Apache Manager
- hussar
- Настройка параметров PHP
- apc.cache_by_default
- default_charset
- display_errors
- log_errors
- magic_quotes_gpc
- mail.add_x_header
- max_input_vars
- mbstring.func_overload и mbstring.internal_encoding
- opcache.revalidate_freq
- pcre.recursion_limit
- post_max_size
- register_globals
- request_order
- upload_max_filesize
- Настройка опций в файле php.ini
- allow_url_fopen
- apc.cache_by_default
- default_charset
- display_errors
- magic_quotes_gpc
- mail.add_x_header
- max_input_vars
- mbstring.func_overload и mbstring.internal_encoding
- opcache.revalidate_freq
- pcre.recursion_limit
- post_max_size
- register_globals
- request_order
- upload_max_filesize
- Опции, которые не могут быть изменены
- Установлен устаревший параметр PHP mbstring.internal_encoding и его значение конфликтует
Директива Default_charset
Директива Default_charset указывает кодировку по умолчанию для всех PHP документов. Наиболее часто используються следующие кодировки символов: UTF-8, ASCII, Windows-1251 (CP1251).
Пример использования:
В зависимости от версии интерпретатора PHP, директива Default_charset имеет разные значения по умолчанию, поэтому не рекомендуется оставлять параметр директивы пустым.
Начиная с версии PHP 5.6 значение по умолчанию является UTF-8 и используется для большинства функций, в частности и для функций Mbstring, если кодировка не изменена в параметрах вызова данных функций. Если директива Default_charset имеет пустой параметр, то кодировка PHP документов определяется директивами AddDefaultCharset, AddCharset в файле .htaccess.
Кодировка, указанная в директиве Default_charset используется для стандартного заголовка Content-Type, отправляемого PHP, если этот заголовок не переопределен вызовом функции Header.
Проверить статус директивы можно с помощью функции Ini_get:
Директива Default_charset относиться к режиму PHP_INI_ALL, поэтому значение может быть установлено отовсюду (более детально в статье: Установка параметров конфигурации PHP).
Кодировку можно также изменить непосредственно в исполняемом файле PHP с помощью функции Ini_set:
или в настройках файла .htaccess:
Будьте внимательны при написании параметра директивы, поскольку системных ошибок не будет, а вывод информации испортиться:
Источник
Кодировка windows 1251 в сайтостроении
Кодировка windows 1251 была создана в начале 90 годов для русификации программных продуктов, выпускаемых корпорацией Microsoft :
Кодировка является 8-битной и включает в себя символы славянской группы языков, в которую входят русский, белорусский, украинский, болгарский, македонский, сербский – это дает преимущество перед остальными кириллическими кодировками ( ISO 8859-5, KOI8-R, CP866 ). Однако у 1251-кодировки имеются и весомые недостатки:
Ниже приведены символы из Code Page 1251 или сокращенно СР1251 ( числа под символами являются кодом в шестнадцатеричной системе такого же символа в Юникоде ):
Кодировка windows 1251 в html
Нередко у web-разработчиков и блогеров, обладающих различной квалификацией возникает проблема с кодировкой страниц: вместо подготовленного текста появляются неизвестные, нечитаемые символы. Чтобы разобраться с данной проблемой, необходимо понимать суть термина « кодировка страницы ».
Текст в памяти компьютера хранится в виде определенного количества байт, а не в том виде, в котором он отображается в текстовом редакторе. Каждый байт является кодом, который соответствует одному символу. Для того чтобы текст на странице отображался как следует, нужно сообщить браузеру, какую таблицу кодов для расшифровки и отображения он должен использовать.
Таблица кодировок не является универсальной, то есть, для расшифровки текста необходимо использовать ту, которая соответствует кодировке символов:
Для того чтобы html-документ корректно отобразился в браузере, необходимо указать используемую кодировку. Делается это следующим образом:
— между тегом и закрывающим его нужно прописать — исходя из этой строки, браузер будет использовать символы русского алфавита для отображения текста на странице.
Кодировка windows 1251 в PHP
Кодировка windows 1251 в htaccess
При создании сайта, предварительно настроив кодировки в шаблонах и базах данных, все равно может всплыть проблема некорректного отображения информации в браузере.
В нем для установки кодировки следует прописать следующие строки:
Таким образом, для корректного отображения текста должны совпадать его кодировка и таблица кодов, с помощью которой браузер будет расшифровывать символы. Для текстов, написанных на славянских языках, необходима win 1251 кодировка. Важно помнить, что элементы страниц и баз данных должны быть описаны с помощью одной таблицы кодов.
Источник
default_charset в php.ini
hussar
In code we trust!
default_charset в php.ini
Народ подскажите плз, как в этом параметре (default_charset) прописывать виндовую кодировку. Если koi8-r так скорее всего и пишется, то как прописывать win-1251 или cp1251, и как юникод? И вообще можно ли это делать?
RomikChef
Guest
Новичок
>И вообще можно ли это делать?
Для php-gtk можно делать.
Guest
; As of 4.0b4, PHP always outputs a character encoding by default in
; the Content-type: header. To disable sending of the charset, simply
; set it to be empty.
;
; PHP’s built-in default is text/html
default_mimetype = «text/html»
default_charset = «windows-1251»
2: hussar
А зачем оно тебе вообще надо? Это только лишь определяет кодировку по умолчанию, если ты сам не сделал этого при помощи META или соотв. хэдера. Т.ч. чем мучать php.ini, выдай любыми подручными средствами php (да хоть echo) META HTTP-EQUIV=»Content-Type» CONTENT=»text/html; charset=windows-1251″ или, для юникода, charset=utf-8.
Apache Manager
Guest
AddDefaultCharset windows-1251 тока в той папке де у тя скрипты лежат =)
hussar
In code we trust!
Если кто-то сталкивался с подобной проблемой, буду очень благодарен за совет
Источник
Настройка параметров PHP
По умолчанию на новых серверах PHP работает в режиме mod_php, но при желании вы можете подключить режим mod_cgi, воспользовавшись нашей инструкцией.
apc.cache_by_default
Управление APC осуществляется директивами:
default_charset
Директива указывает кодировку по умолчанию (например, cp1251, utf-8, koi8-r) для всех выдаваемых страниц.
display_errors
Директива указывает, требуется ли выводить ошибки на экран вместе с остальным выводом, либо ошибки должны быть скрыты от пользователя.
Включение и выключение осуществляются следующим образом:
log_errors
Опция позволяет включить логирование ошибок php с их записью в произвольный файл (в примере errors.log). При указании пути к файлу замените u и user на первую букву вашего логина и сам логин.
magic_quotes_gpc
Включение и выключение magic_quotes осуществляется директивами:
Опция позволяет включить логирование отправки почты из скриптов сайта. Логи будут содержать полный путь до скрипта, адрес получателя и заголовки. При указании пути к файлу, в который будут записываться логи (mail.log), замените u и user на первую букву вашего логина и сам логин.
max_input_vars
Директива указывает, сколько входных переменных может быть принято в одном запросе. Например:
mbstring.func_overload и mbstring.internal_encoding
Для корректной работы сайтов на старых версиях CMS Битрикс (до v20.100.0) требуются следующие параметры:
opcache.revalidate_freq
Отключение OpCache (настройка требуется для CMS Битрикс):
pcre.recursion_limit
Устанавливает лимит на рекурсию.
post_max_size
register_globals
Директивы для включения/выключения глобальных переменных:
request_order
Директива регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST.
upload_max_filesize
Устанавливает максимальный размер закачиваемого файла.
Настройка опций в файле php.ini
allow_url_fopen
Опция включает поддержку оберток URL (URL wrappers), которые позволяют работать с объектами URL по протоколам ftp или http как с обычными файлами.
Включение опции (для отключения значение = 0):
apc.cache_by_default
Отключение APC (для включения значение = 1):
default_charset
Указание кодировки по умолчанию:
display_errors
Включение вывода ошибок (для выключения значение = off).
magic_quotes_gpc
Отключение Magic Quotes (для включения значение = 1):
Включение логирования отправки почты из скриптов сайта. В директиве mail.log указывается путь к файлу, в который будут сохраняться логи (замените u и user на первую букву вашего логина и сам логин).
max_input_vars
Изменение количества вводимых переменных:
mbstring.func_overload и mbstring.internal_encoding
Настройки для старых версий CMS Битрикс:
opcache.revalidate_freq
Отключение OpCache (настройка для CMS Битрикс):
pcre.recursion_limit
post_max_size
register_globals
Отключение Register Globals (для включения значение = 1):
request_order
Регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST.
upload_max_filesize
Устанавливает максимальный размер закачиваемого файла.
Опции, которые не могут быть изменены
К настройкам PHP, изменение которых невозможно в рамках виртуального хостинга, относятся:
Источник
Установлен устаревший параметр PHP mbstring.internal_encoding и его значение конфликтует
Обновили модуль обновления, появилось сообщение
Цитата |
---|
Установлен устаревший параметр PHP mbstring.internal_encoding и его значение конфликтует со значением параметра default_charset. Пожалуйста, исправьте значения указанных параметров или обратитесь в службу технической поддержки вашего хостинга.. |
Ответ от техподдержки: Параметры mbstring.internal_encoding, default_charset в конфигурации PHP и кодировка сайта должны быть одинаковыми
Сайт на windows-1251
Подскажите, пожалуйста, как поправить? в каких файла?
P.S. После правок в /etc перезагружай http
Может что-то еще забыл?
Цитата |
---|
Вячеслав Любовин написал: Параметры mbstring.internal_encoding, default_charset в конфигурации PHP и кодировка сайта должны быть одинаковыми |
интересно а как быть в ситуации когда на серваке есть сайты и utf 8 и 1251 кодировки
default_charset для всех один ведь и получается сайты надо переводить с 1251 на utf-8
Доброго всем дня. Давайте по порядку)
Вячеслав Любовин, ваш сайт на windows-1251 кодировке когда был создан на какой версии машины? (важно, потому что были доработки, не факт что у вас они есть, потому уточняю).
Вообще менять тут как минимум неверно) Это общие параметры всей машины. По умолчанию там должно быть:
Если посмотрите конфиг файлы httpd для UTF-8 сайтов, то там этих строк не будет. Эти опции будут браться из файла /etc/php.d/bitrixenv.ini.
Кроме того чтобы система обновлений проекта работала после обновления для проекта в кодировке windows-1251 нужно для этого проекта в файле /bitrix/php_interface/dbconn.php добавить строку:
Это подправим в следующей бете 7.4.12.
Цитата |
---|
Александр Панишев написал: интересно а как быть в ситуации когда на серваке есть сайты и utf 8 и 1251 |
кодировки default_charset для всех один ведь и получается сайты надо переводить с 1251 на utf-8
Алексей Шафранский, Устанавливал на свежую 7.4.3
После загрузки машины, был удален дефолтный сайт, и создан на windows 1251, потом бэкап был перенес с хостинга
Далее всеми правдами и не правдами пытался избавиться от ошибок которые возникали при проверке битрикса
Источник
Этот список включает встроенные директивы php.ini, которые вы можете
использовать для настройки PHP. Директивы, которые обрабатываются модулями,
перечислены и подробно описаны на страницах документаций соответствующих
модулей.
К примеру, информация о директивах сессий может быть найдена на
странице документации сессий.
Замечание:
Представленные здесь значения по умолчанию используются в случае, если не был подключен php.ini;
значения для боевого php.ini и для разработки могут различаться.
Опции Httpd
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
async_send | «0» | PHP_INI_ALL | Доступна, начиная с PHP 4.2.0. Удалена в PHP 4.3.0. |
Языковые опции
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
short_open_tag | «1» | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 4.0.0. PHP_INI_PERDIR в PHP < 4.0.1 |
asp_tags | «0» | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 4.0.0. Удалена в PHP 7.0.0. |
precision | «14» | PHP_INI_ALL | |
serialize_precision | «17» | PHP_INI_ALL | Доступна с версии PHP 4.3.2. До версии PHP 5.3.5 значение по умолчанию было равно 100. |
y2k_compliance | «1» | PHP_INI_ALL | Удалена в PHP 5.4.0. |
allow_call_time_pass_reference | «1» | PHP_INI_PERDIR | PHP_INI_ALL в PHP 4.0.0. |
disable_functions | «» | Только PHP_INI_SYSTEM | Доступна с версии PHP 4.0.1. |
disable_classes | «» | Только php.ini | Доступна с версии PHP 4.3.2. |
exit_on_timeout | «» | PHP_INI_ALL | Доступна с версии PHP 5.3.0. |
expose_php | «1» | Только php.ini | |
zend.multibyte | «0» | PHP_INI_ALL | Доступна с версии PHP 5.4.0 |
zend.script_encoding | NULL | PHP_INI_ALL | Доступна с версии PHP 5.4.0 |
zend.detect-unicode | NULL | PHP_INI_ALL | Доступна с версии PHP 5.4.0 |
zend.signal_check | «0» | PHP_INI_SYSTEM | Доступна с версии PHP 5.4.0 |
zend.assertions | «1» | PHP_INI_ALL | Доступна с версии PHP 7.0.0. |
zend.ze1_compatibility_mode | «0» | PHP_INI_ALL | Доступна с версии PHP 5.0.0. Удалена в PHP 5.3.0 |
detect_unicode | «1» | PHP_INI_ALL | Доступна с версии PHP 5.1.0. Переименована на zend.detect-unicode с версии PHP 5.4.0. |
Краткое разъяснение конфигурационных
директив.
-
short_open_tag
boolean -
Определяет, разрешается ли короткая форма записи
(<? ?>
) тегов PHP.
Если вы хотите использовать PHP совместно с XML, вы можете
отключить эту опцию, чтобы беспрепятственно использовать
<?xml ?>
. В противном случае, вы можете
отобразить это при помощи PHP, например:
<?php echo '<?xml version="1.0"?>'; ?>
.
Если же эта опция отключена, вы должны использовать длинную форму
открывающего тега PHP (<?php ?>
).Замечание:
Эта директива также влияла на сокращение
<?=
до версии PHP 5.4.0,
которое идентично записи<? echo
.
Для использования этого сокращения должна была быть включена
директива
short_open_tag
.
Начиная с версии PHP 5.4.0 запись<?=
стала доступна всегда. -
asp_tags
boolean -
Включает использование тегов в стиле ASP в дополнение к обычным
тегам <?php ?>. Это касается и сокращения для отображения
значения переменных <%= $value %>. Для получения дополнительной
информации, обратитесь к разделу Экранирование HTML.
Changelog for asp_tags
Версия Описание 7.0.0 Удалена из PHP. -
precision
integer -
Количество значащих цифр, отображаемых для чисел с плавающей точкой.
-
serialize_precision
integer -
Количество сохраняемых значащих цифр при сериализации
чисел с плавающей точкой.
-
y2k_compliance
boolean -
Включение совместимости с 2000 годом (создаст проблемы с
несовместимыми браузерами)
-
allow_call_time_pass_reference
boolean -
Нужно ли выводить предупреждение, если аргументы
передаются по ссылке при вызове функции. Рекомендуется
указывать в объявлении функции передаваемые по ссылке
аргументы. Попробуйте выключить эту опцию и убедиться,
что ваши скрипты правильно работают без нее и что они будут
работать с будущими версиями языка (вы будете получать
предупреждение каждый раз, когда вы будете пользоваться этой
возможностью).Передача аргументов по ссылке во время вызова функции была объявлена
устаревшей из соображений чистоты кода. Функция может менять свои
аргументы недокументированным способом, если бы аргумент не объявлялся
передаваемым по ссылке. Чтобы избежать побочных
эффектов, лучше явно указывать, какие аргументы передаются по
ссылке только при объявлении функции.См. также Подробное описание ссылок.
Список изменений для allow_call_time_pass_reference
Версия Описание 5.4.0 Удалена из PHP. 5.3.0 Генерирует ошибку уровня E_DEPRECATED
.5.0.0 Устарела и генерирует ошибку уровня E_COMPILE_WARNING
. -
expose_php
boolean -
Выдает факт присутствия PHP на сервере, включая передачу
версии PHP в HTTP-заголовке (например, X-Powered-By: PHP/5.3.7).
До версии PHP 5.5.0 также показывались идентификаторы логотипов, таким образом, при
добавлении их к ссылке на сайте с PHP показывался соответствующий
логотип (например, » http://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42).
Отключение данной опции также влияло на вывод функции
phpinfo(), в этом случае
логотип PHP и информация о разработчиках, принимавших участие
в разработке PHP, не отображались.Замечание:
В версии PHP 5.5.0 данные идентификаторы логотипов и функция
php_logo_guid() были удалены, теперь для отображения
логотипов используется механизм data URI. Таким образом добавление
идентификатора логотипа к ссылке (для показа логотипа) больше не работает.
Аналогично, выключение опцииexpose_php
более не
влияет на отображение логотипа PHP в выводе функции phpinfo().Смотрите также php_logo_guid() и phpcredits().
-
disable_functions
string -
Эта директива позволяет отключить некоторые функции по
причинам безопасности. Она принимает
список имен функций, разделенный запятыми. disable_functions
не подвержена влиянию безопасного режима.Только внутренние функции
могут быть отключены с помощью этой директивы.
Пользовательские функции
ей не подвержены.Эта директива должна быть установлена в php.ini. Например,
ее нельзя использовать в httpd.conf. -
disable_classes
string -
Эта директива позволяет отключить некоторые классы по
причинам безопасности. Она принимает
список имен классов, разделенных запятыми. disable_classes
не подвержена влиянию безопасного режима.
Эта директива должна быть установлена в php.ini. Например,
ее нельзя использовать в httpd.conf.
-
zend.assertions
integer -
Если задано значение 1, проверочный код будет исполняться (режим
разработки). Если задан 0, код проверок будет сгенерирован, одноко
исполняться не будет. Если задано -1, проверочный код не будет
генерироваться (продуктивный режим).
-
zend.ze1_compatibility_mode
boolean -
Включает режим совместимости с Zend Engine 1 (PHP 4). Это влияет на
клонирование, приведение типов (объекты без свойств приводятся кFALSE
или 0) и сравнение объектов.
В этом режиме объекты по умолчанию передаются по значению вместо ссылки.См. также раздел
Переход с PHP 4 на PHP 5.Внимание
Эта возможность была помечена УСТАРЕВШЕЙ и БЫЛА УДАЛЕНА
в версии PHP 5.3.0. -
zend.multibyte
boolean -
Разрешает парсинг исходных файлов в многобайтных кодировках. Включение zend.multibyte
требуется для использования кодировок символов подобных SJIS, BIG5 и т.д., содержащих
специальные символы в многобайтных строковых данных. Совместимые с ISO-8859-1 кодировки, например
UTF-8, EUC и т.д., не требуют эту опцию. -
zend.script_encoding
string -
Данное значение будет использовано, только при отсутствии директивы
declare(encoding=…)
в начале скрипта. При использовании кодировок несовместимых с ISO-8859-1,
нужно использовать опции и zend.multibyte и zend.script_encoding. -
zend.detect_unicode
boolean -
Определяет, нужно ли проверять BOM (Byte Order Mark, метка порядка байт)
и корректность многобайтных символов в файле.
Эта проверка производится до вызова __halt_compiler().
Доступна только в режиме Zend Multibyte. -
zend.signal_check
boolean -
Определяет, нужно ли проверять замененные обработчики сигналов при завершении скрипта.
-
exit_on_timeout
boolean -
Эта директива только для Apache1 mod_php, которая заставляет потомка Apache завершиться, если произошел тайм-аут исполнения скрипта PHP.
Такой тайм-аут приводит к внутреннему вызову longjmp() в Apache1, который оставляет некоторые расширения в несогласованном
состоянии. По завершении процесса все неснятые блокировки или память будут очищены.
Ограничения ресурсов
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
memory_limit | «128M» | PHP_INI_ALL | «8M» до PHP 5.2.0, «16M» в PHP 5.2.0 |
Краткое разъяснение конфигурационных
директив.
-
memory_limit
integer -
Эта директива задает максимальный объем памяти в байтах, который
разрешается использовать скрипту. Это помогает предотвратить
ситуацию, при которой плохо написанный скрипт съедает всю доступную
память сервера. Для того, чтобы убрать ограничения, установите значение
этой директивы в -1.В версиях до PHP 5.2.1 для использования этой директивы, она должна была
быть указана на этапе компиляции. Так, ваша строка конфигурации должна
была включать:
—enable-memory-limit
. Эта опция компиляции
была также необходима для использования функций memory_get_usage() и
memory_get_peak_usage() до версии 5.2.1.Если используется integer,
значение измеряется байтами. Вы также можете использовать сокращенную запись,
которая описана в этом разделе FAQ.
См. также: max_execution_time.
Настройка производительности
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
realpath_cache_size | «16K» | PHP_INI_SYSTEM | Доступна с версии PHP 5.1.0. |
realpath_cache_ttl | «120» | PHP_INI_SYSTEM | Доступна с версии PHP 5.1.0. |
Краткое разъяснение конфигурационных
директив.
-
realpath_cache_size
integer -
Определяет размера кэша realpath, используемого в PHP. Это значение
должно быть увеличено на системах, в которых PHP открывает большое
количество файлов соответственно количеству выполняемых файловых операций.Размер равный общему числу байт, хранящимся в строках путей, плюс
размер данных связанных с кешируемым элементом. Это значит, что для
хранения длинных путей в кэше, размер этого кэша должен быть больше.
Это значение не определяет напрямую количество разных путей, которые
могут быть закэшированы.Размер, необходимый для кэширования, зависит от системы.
-
realpath_cache_ttl
integer -
Время (в секундах) в течение которого будет использован кэш realpath
для указанного файла или директории. Для систем с редко меняющимися файлами
это значение можно увеличить.
Обработка данных
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
arg_separator.output | «&» | PHP_INI_ALL | Доступна с версии PHP 4.0.5. |
arg_separator.input | «&» | PHP_INI_PERDIR | Доступна с версии PHP 4.0.5. |
variables_order | «EGPCS» | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 5.0.5. |
request_order | «» | PHP_INI_PERDIR | Доступна с версии PHP 5.3.0 |
auto_globals_jit | «1» | PHP_INI_PERDIR | Доступна с версии PHP 5.0.0. |
register_globals | «0» | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 4.2.3. Удалена в PHP 5.4.0. |
register_argc_argv | «1» | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 4.2.3. |
register_long_arrays | «1» | PHP_INI_PERDIR | Доступна с версии PHP 5.0.0. Помечена устаревшей в PHP 5.3.0. Удалена в PHP 5.4.0. |
enable_post_data_reading | «1» | PHP_INI_PERDIR | Доступна с версии PHP 5.4.0 |
post_max_size | «8M» | PHP_INI_PERDIR | PHP_INI_SYSTEM в PHP <= 4.2.3. Доступна с версии PHP 4.0.3. |
auto_prepend_file | NULL | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 4.2.3. |
auto_append_file | NULL | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 4.2.3. |
default_mimetype | «text/html» | PHP_INI_ALL | |
default_charset | «UTF-8» | PHP_INI_ALL | По умолчанию «UTF-8» с PHP >= 5.6.0; пустая для PHP < 5.6.0. |
always_populate_raw_post_data | «0» | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 4.2.3. Доступна с версии PHP 4.1.0. Удалена в PHP 7.0.0. |
Краткое разъяснение конфигурационных
директив.
-
arg_separator.output
string -
Этот разделитель используется в генерируемых PHP URL в качестве
разделителя аргументов. -
arg_separator.input
string -
Список разделителей, используемых PHP для получения переменных из
URL.Замечание:
Каждый символ в этой директиве считается разделителем!
-
variables_order
string -
Устанавливает порядок обработки переменных EGPCS
(Environment,
Get, Post,
Cookie, и Server).
Например, если variables_order установлена в «SP»,
то PHP создаст superglobals $_SERVER и
$_POST, но не будет создавать
$_ENV, $_GET и
$_COOKIE. Установка в «» означает, что ни
одна superglobals не будет установлена.Если включена устаревшая директива
register_globals,
то variables_order также устанавливает порядок экспорта переменных
ENV, GET, POST,
COOKIE и SERVER в глобальное
пространство. Например, если порядок переменных установлен как
«EGPCS», register_globals включена,
и существуют обе $_GET[‘action’] и
$_POST[‘action’], то переменная
$action будет содержать значение
$_POST[‘action’], так как P
в нашем примере идет после G.Внимание
В CGI и FastCGI SAPI,
в $_SERVER также добавляются значения
переменных окружения; S
всегда эквивалентна ES вне зависимости от
самого положения E в этой директиве.Замечание:
Эта директива также влияет на содержимое и порядок переменной
$_REQUEST. -
request_order
string -
Эта директива регулирует порядок, в котором PHP добавляет переменные GET, POST
и Cookie в массив _REQUEST. Добавление производится слева направо,
новые значения перезаписывают старые.Если значение этой директивы не установлено, то используется значение директивы variables_order для содержимого
переменной $_REQUEST.Учтите, что файлы php.ini, поставляемые с дистрибутивом,
по соображениям безопасности не содержат значение ‘C’ (cookies). -
auto_globals_jit
boolean -
Когда включено, переменные SERVER и ENV создаются в тот момент,
когда они впервые используются (Just In Time), а не в начале
выполнения скрипта. Если эти переменные в скрипте не используются,
включение этой директивы приведет к росту производительности.Директивы PHP
register_globals,
register_long_arrays и
register_argc_argv
должны быть выключены для правильной работы этой директивы. Начиная с
версии PHP 5.1.3 стало необязательно выключать register_argc_argv.Внимание
Использование переменных SERVER и ENV проверяется на стадии компиляции,
поэтому их использование с помощью, например, переменных переменных не
запустит их инициализацию. -
register_globals
boolean -
Регистрировать или нет переменные EGPCS (Environment, GET, POST,
Cookie, Server) в качестве глобальных переменных.Начиная с версии
» PHP 4.2.0,
значением по умолчанию для этой директивы является
off.Пожалуйста, ознакомтесь с главой о безопасности
Использование глобальных переменных
для получения дополнительной информации.Обратите внимание, что
register_globals
не может
быть установлена во время выполнения скрипта
(ini_set()). Тем не менее, вы можете использовать
.htaccess, если ваш сервер позволяет это, как описано выше.
Пример директивы в .htaccess:
php_flag register_globals off
.Замечание:
На поведение
register_globals
влияет
директива variables_order.Внимание
Данная возможность была
помечена УСТАРЕВШЕЙ начиная с версии PHP 5.3.0 и
была УДАЛЕНА в версии PHP 5.4.0. -
register_argc_argv
boolean -
Сообщает PHP, следует ли объявлять переменные argv и argc
(которые будут содержать GET-информацию).
См. также Использование PHP в
командной строке.
-
register_long_arrays
boolean -
Сообщает PHP, следует ли регистрировать устаревшие длинные
предопределенные
переменные типа $HTTP_*_VARS.
Если включена (по умолчанию), то длинные предопределенные переменные
PHP, например $HTTP_GET_VARS, будут объявлены.
Если вы их не используете, рекомендуем отключить их из соображений
производительности. Вместо них следует использовать суперглобальные
массивы, например $_GET.
Эта директива стала доступна с версии PHP 5.0.0.
Внимание
Данная возможность была
помечена УСТАРЕВШЕЙ начиная с версии PHP 5.3.0 и
была УДАЛЕНА в версии PHP 5.4.0. -
enable_post_data_reading
boolean -
При отключении этой опции суперглобальные переменные
$_POST и $_FILES
не будут заполняться.
Единственным способом прочесть POST-данные будет
чтение обертки потока
php://input.
Это может оказаться полезным при проксировании запросов или
обработки POST-данных способом, более эффективно использующим
память.
-
post_max_size
integer -
Устанавливает максимально допустимый размер данных, отправляемых методом
POST. Это значение также влияет на загрузку файлов.
Для загрузки больших файлов это значение должно быть больше значения
директивы
upload_max_filesize.
В сущности,
memory_limit должна быть
больше чемpost_max_size
.
Если используется integer,
значение измеряется байтами. Вы также можете использовать сокращенную запись,
которая описана в этом разделе FAQ.
Если размер POST-данных больше чем post_max_size,
суперглобальные переменные
$_POST и $_FILES
будут пустыми. Это можно отследить различными способами, например
передав $_GET переменную в скрипт, обрабатывающий
данные, т.е. <form action=»edit.php?processed=1″>,
а затем проверить, установлена ли переменная $_GET[‘processed’].
Замечание:
PHP разрешает сокращения значений байт, включая K (кило), M (мега)
и G (гига). PHP автоматически преобразует все эти сокращения.
Будьте осторожны с превышением диапазона 32-битных целых значений
(если вы используете 32-битную версию), так как это приведет к ошибке
вашего скрипта.Список изменений post_max_size
Версия Описание 5.3.4 Установка post_max_size
= 0 не снимет ограничение,
если контент имеет тип application/x-www-form-urlencoded или не зарегистрирован в PHP.5.3.2 , 5.2.12 Стало возможным снять ограничение на размер пост-запроса установкой
post_max_size
в 0. -
auto_prepend_file
string -
Определяет имя файла, который будет автоматически обрабатываться
перед основным файлом. Файл вызывается так, будто он был подключен
при помощи функции require, так что
include_path также используется.Специальное значение none
отключает эту директиву. -
auto_append_file
string -
Определяет имя файла, который будет автоматически обрабатываться
после основного файла. Файл вызывается так, будто он был подключен
при помощи функции require, так что
include_path тоже используется.Специальное значение none
отключает эту директиву.Замечание:
Если скрипт завершает работу при помощи exit(),
auto-append НЕ выполняется. -
default_mimetype
string -
По умолчанию PHP выводит название кодировки в заголовке Content-Type. Если передавать
кодировку не требуется, просто оставьте эту опцию пустой. -
default_charset
string -
В PHP 5.6 и новее «UTF-8» является значением по умолчанию и используется как
кодировка по умолчанию для функций
htmlentities(),
html_entity_decode() и
htmlspecialchars(), если параметр
encoding
не указан. Значение
default_charset
также используется для указания
кодировки по умолчанию для функций iconv, если
конфигурационные опции
iconv.input_encoding
,
iconv.output_encoding
и
iconv.internal_encoding
не установлены, и для функций
mbstring, если не установлены
mbstring.http_input
mbstring.http_output
mbstring.internal_encoding
.Все версии PHP используют это значение как кодировку для
стандартного заголовка Content-Type, отправляемого PHP, если
этот заголовок не переопределен вызовом функции header().Не рекомендуется устанавливать
default_charset
в пустое значение. -
input_encoding
string -
Доступна с PHP 5.6.0. Эта опция используется для многобайтных модулей,
таких как mbstring и iconv. По умолчанию пусто. -
output_encoding
string -
Доступна с PHP 5.6.0. Эта опция используется для многобайтных модулей,
таких как mbstring и iconv. По умолчанию пусто. -
internal_encoding
string -
Доступна с PHP 5.6.0. Эта опция используется для многобайтных модулей,
таких как mbstring и iconv. По умолчанию пусто. В это случае используется
default_charset. -
always_populate_raw_post_data
mixed -
Внимание
This feature was
DEPRECATED in PHP 5.6.0, and
REMOVED as of PHP 7.0.0.Если установлена в
TRUE
, то PHP будет всегда компоновать
$HTTP_RAW_POST_DATA сырыми POST данными.
Иначе, переменная компонуется только если не распознан MIME-тип.Рекомендуемым методом для доступа к сырым POST данным является
php://input, и
$HTTP_RAW_POST_DATA считается устаревшим с PHP 5.6.0.
Установкаalways_populate_raw_post_data
в значение -1 задает новое поведение, которое будет
реализовано в будущих версиях PHP, когда $HTTP_RAW_POST_DATA
больше не будет использоваться.Согласно настройкам $HTTP_RAW_POST_DATA не
доступен при enctype=»multipart/form-data».
См. также: magic_quotes_gpc,
magic_quotes_runtime и
magic_quotes_sybase.
Пути и Директории
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
include_path | «.;/path/to/php/pear» | PHP_INI_ALL | |
open_basedir | NULL | PHP_INI_ALL | PHP_INI_SYSTEM в PHP < 5.3.0 |
doc_root | NULL | PHP_INI_SYSTEM | |
user_dir | NULL | PHP_INI_SYSTEM | |
extension_dir | «/path/to/php» | PHP_INI_SYSTEM | |
extension | NULL | Только php.ini | |
zend_extension | NULL | Только php.ini | |
zend_extension_debug | NULL | Только php.ini | Доступна до PHP 5.3.0. |
zend_extension_debug_ts | NULL | Только php.ini | Доступна до PHP 5.3.0. |
zend_extension_ts | NULL | Только php.ini | Доступна до PHP 5.3.0. |
cgi.check_shebang_line | «1» | PHP_INI_SYSTEM | Доступна с версии PHP 5.2.0. |
cgi.fix_pathinfo | «1» | PHP_INI_SYSTEM | Доступна с версии PHP 4.3.0. PHP_INI_ALL до версии PHP 5.2.1. |
cgi.force_redirect | «1» | PHP_INI_SYSTEM | Доступна с версии PHP 4.2.0. PHP_INI_ALL до версии PHP 5.2.1. |
cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | Доступна с версии PHP 4.2.0. PHP_INI_ALL до версии PHP 5.2.1. |
cgi.rfc2616_headers | «0» | PHP_INI_ALL | Доступна с версии PHP 4.3.0. |
fastcgi.impersonate | «0» | PHP_INI_SYSTEM | Доступна с версии PHP 4.3.0. PHP_INI_ALL до версии PHP 5.2.1. |
fastcgi.logging | «1» | PHP_INI_SYSTEM | Доступна с версии PHP 4.3.0. PHP_INI_ALL до версии PHP 5.2.1. |
Краткое разъяснение конфигурационных
директив.
-
include_path
string -
Указывает список директорий, в которых функции
require, include,
fopen(), file(),
readfile() и file_get_contents()
ищут файлы. Формат соответствует формату системной переменной окружения
PATH: список директорий,
разделенных двоеточием в Unix или точкой с запятой в Windows.При поиске подключаемых файлов PHP отдельно рассматривает каждое
значение в include_path.
Он проверяет первый путь, если файл в нем не найден, то он переходит
к следующему, и так до тех пор, пока не найдет подключаемый файл, либо
вернет
предупреждение
или ошибку.
Вы можете изменить ваш include_path во время выполнения скрипта с
помощью функции
set_include_path().Пример #1 include_path в Unix
include_path=".:/php/includes"
Пример #2 include_path в Windows
include_path=".;c:phpincludes"
Использование . в include_path позволяет
задавать относительные пути для подключения файлов, так как
точка означает текущую директорию. Однако, более эффективно
использовать include ‘./file’, чем заставлять
PHP каждый раз проверять текущую директорию при подключении каждого
файла.Замечание:
Переменные окружения (ENV) также доступны в .ini файлах.
Таким образом, можно ссылаться на домашнюю директорию с помощью директив
${LOGIN} и ${USER}.Переменные окружения могут отличаться между различными серверными API,
так как сами эти окружения отличаются друг от друга.Пример #3 Настройка include_path с помощью переменной окружения ${USER} в Unix
include_path = ".:${USER}/pear/php"
-
open_basedir
string -
Ограничивает указанным деревом каталогов файлы, которые могут быть доступны для PHP,
включая сам файл.
Эта директива НЕ подвержена влиянию
безопасного режима.Когда скрипт пытается получить доступ к файлу, например, с помощью функции
fopen() или gzopen(),
проверяется местонахождение файла. Если файл находится вне указанного
дерева каталогов, PHP откажется его открывать. Все символические
ссылки будут раскрыты, так что с их помощью не удастся обойти это
ограничение. Если файл не существует, то символическая ссылка не сможет
быть прочитана и имя файла (прочитанное) будет рассматриваться
open_basedir
.Опция open_basedir
может распространяться не только на функции для работы с файловой системой;
например, если MySQL настроен использовать драйвер mysqlnd, то
LOAD DATA INFILE подпадает под опцию open_basedir
.
Множество функций PHP также использует open_basedir.Специальное значение
.
обозначает, что рабочая директория скрипта будет использована в качестве
базовой директории. Однако, это немного опасно, так как текущая директория
скрипта может быть легко изменена с помощью chdir().В httpd.conf, open_basedir
может быть
выключена (например, для некоторых виртуальных хостов)
тем же способом, что и
любая другая конфигурационная директива: «php_admin_value open_basedir
none«.В Windows разделяйте директории точкой с запятой. На всех остальных
системах, разделяйте директории двоеточием. При работе в качестве модуля Apache,
пути open_basedir
автоматически наследуются от родительских
директорий.Ограничение, определяемое open_basedir
является
именем директории начиная с версии PHP 5.2.16 и 5.3.4. Предыдущие
версии использовали это значение в качестве префикса. Это означает,
что «open_basedir = /dir/incl» также разрешит доступ
к «/dir/include» и «/dir/incls«,
если они существуют. Если вы захотите ограничить доступ только указанной
директорией, поставьте в конце слеш. Например:
open_basedir = /dir/incl/По умолчанию все файлы могут быть открыты.
Замечание:
Начиная с версии PHP 5.3.0 значение open_basedir можно сделать
более строгим во время выполнения скрипта. Это означает, что если
open_basedir была установлена в /www/ в php.ini,
то скрипт может ужать конфигурацию до
/www/tmp/ во время выполнения с помощью
ini_set(). При указании нескольких директорий
можно использовать константуPATH_SEPARATOR
в качестве разделителя путей, не зависящего от операционной
системы. -
doc_root
string -
«Корневая директория» PHP на этом сервере. Используется только в
случае, если не пустая. Если PHP сконфигурирован с безопасный режим,
файлы вне этой директории не обрабатываются.
Если PHP не был скомпилирован с FORCE_REDIRECT, вам следует
установить doc_root, если вы используете PHP в качестве
CGI под любым веб-сервером (кроме IIS). Альтернативой является
использование конфигурационной директивы
cgi.force_redirect,
речь о которой идет ниже. -
user_dir
string -
Базовое имя директории, используемой в домашнем каталоге пользователя
для PHP файлов, например,
public_html. -
extension_dir
string -
В какой директории PHP должен искать динамически загружаемые
расширения. См. также: enable_dl
и dl(). -
extension
string -
Какие динамически загружаемые расширения должны быть загружены при
старте PHP. -
zend_extension
string -
Имя динамически загружаемого расширения Zend (например,
APD), которое должно быть загружено
при старте PHP. -
zend_extension_debug
string -
Вариант zend_extension
для расширений, скомпилированных с отладочной информацией до PHP 5.3.0. -
zend_extension_debug_ts
string -
Вариант zend_extension
для потокобезопасных расширений, скомпилированных с отладочной информацией
до PHP 5.3.0. -
zend_extension_ts
string -
Вариант zend_extension
для потокобезопасных расширений. -
cgi.check_shebang_line
boolean -
Контролирует, нужно ли проверять первую строку
CGI PHP-скрипта на содержание
#! (shebang).
Эта строка может быть необходима, если скрипт
должен поддерживать как отдельный запуск, так и с помощью
PHP CGI. PHP в режиме
CGI пропускает эту строку и игнорирует ее
содержимое, если данная директива включена. -
cgi.fix_pathinfo
boolean -
Обеспечивает поддержку правильных
PATH_INFO/PATH_TRANSLATED
в CGI. Раньше PHP просто устанавливал
PATH_TRANSLATED в SCRIPT_FILENAME
и не обращал внимания на PATH_INFO.
Для получения дополнительной информации о PATH_INFO,
обратитесь к спецификации CGI. Установка этого
значения в 1 заставит PHP CGI
исправлять свой путь в соответствии со спецификацией. Значение 0
соответствует предыдущему поведению. По умолчанию опция включена.
Вы должны исправить свои скрипты так, чтобы они использовали
SCRIPT_FILENAME вместо PATH_TRANSLATED. -
cgi.force_redirect
boolean -
Директива cgi.force_redirect необходима для обеспечения безопасности
во время работы PHP в качестве CGI под большинством веб-серверов.
Если оставить ее неопределенной, по умолчанию PHP включает эту
директиву. Вы можете выключить ее на свой страх и
риск.Замечание:
Пользователям Windows: При использовании IIS эта опция
должна быть отключена. Тоже самое необходимо
для OmniHTTPD и Xitami. -
cgi.redirect_status_env
string -
Если cgi.force_redirect включена и вы работаете не под веб-сервером
Apache или Netscape (iPlanet), вам может
понадобиться установить переменную окружения, которую будет искать
PHP чтобы убедиться, что он может продолжать выполнение.Замечание:
Установка этой переменной может повлечь за
собой проблемы с безопасностью, так что
вы должны знать, что вы делаете. -
Сообщает PHP, какой тип заголовков использовать при отправке
кода ответа HTTP. Если установлено в 0, PHP отправляет
» RFC 3875 заголовок
«Status:», который поддерживается Apache и другими веб-серверами.
Если установлено в 1, PHP отправляет заголовки, соответствующие
» RFC 2616.Если эта опция включена и вы используете PHP в окружении CGI (например,
PHP-FPM), то вместо использования HTTP-заголовков ответа в стиле
RFC 2616, нужно использовать их эквивалент из стандарта RFC 3875, например,
вместо header(«HTTP/1.0 404 Not found»); нужно использовать
header(«Status: 404 Not Found»);Оставьте в значении 0, если вы не уверены в том, что это значит.
-
fastcgi.impersonate
string -
FastCGI под IIS (в ОС на базе WINNT) поддерживает возможность
имперсонации прав безопасности вызывающего клиента. Это позволяет
IIS определить контекст безопасности, в котором выполняется запрос.
mod_fastcgi под Apache на текущий момент не поддерживает эту
возможность (03/17/2002).
Установите в 1 при работе под IIS. Значение по умолчанию — ноль. -
fastcgi.logging
boolean -
Включает логирование SAPI при использовании FastCGI. Логирование
включено по умолчанию.
Закачивание Файлов
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
file_uploads | «1» | PHP_INI_SYSTEM | PHP_INI_ALL в PHP <= 4.2.3. Доступна с версии PHP 4.0.3. |
upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
max_input_nesting_level | 64 | PHP_INI_PERDIR | Доступна с версии PHP 5.3.9. |
max_input_vars | 1000 | PHP_INI_PERDIR | Доступна с версии PHP 5.3.9. |
upload_max_filesize | «2M» | PHP_INI_PERDIR | PHP_INI_ALL в PHP <= 4.2.3. |
max_file_uploads | 20 | PHP_INI_SYSTEM | Доступна с версии PHP 5.2.12. |
Краткое разъяснение конфигурационных
директив.
-
file_uploads
boolean -
Разрешать или не разрешать
закачивание файлов. См. также директивы
upload_max_filesize,
upload_tmp_dir и
post_max_size. -
upload_tmp_dir
string -
Временная директория, используемая для хранения файлов во время
закачивания. Должна быть доступна для записи пользователю,
от имени которого запущен PHP. Если не указана, используется
директория по умолчанию для вашей системы.Если к указанной директории нет прав на запись, PHP откатится обратно
к системной временной директории, используемой по умолчанию. Если
включена директива open_basedir,
то для успешной загрузки файлов
системная директория по умолчанию должна быть разрешена. -
upload_max_filesize
integer -
Максимальный размер закачиваемого файла.
Если используется integer,
значение измеряется байтами. Вы также можете использовать сокращенную запись,
которая описана в этом разделе FAQ. -
max_file_uploads
integer -
Максимально разрешенное количество одновременно закачиваемых файлов.
Начиная с PHP 5.3.4, пустые поля загрузки не рассматриваются этим
ограничением.
Общий SQL
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
sql.safe_mode | «0» | PHP_INI_SYSTEM |
Краткое разъяснение конфигурационных
директив.
-
sql.safe_mode
boolean -
Если включена, функции соединения с базой данных, использующие
значения по умолчанию, будут использовать эти значения вместо
любых передаваемых аргументов. Для значений по умолчанию смотрите
документацию по функциям подключения соответствующей базы данных.
Особые настройки для ОС Windows
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
windows_show_crt_warning | «0» | PHP_INI_ALL | Доступна начиная с PHP 5.4.0. |
Краткое разъяснение конфигурационных
директив.
-
windows_show_crt_warning
boolean -
При включении данной директивы будут отображаться предупреждения
Windows CRT. Данные предупреждения ранее показывались по умолчанию до
версии PHP 5.4.0.
Вернуться к: Директивы php.ini
Доброго всем дня. Давайте по порядку)
Вячеслав Любовин, ваш сайт на windows-1251 кодировке когда был создан на какой версии машины? (важно, потому что были доработки, не факт что у вас они есть, потому уточняю).
Цитата |
---|
Андрей Николаев написал: Для Bitrix Env смотри там: Код/etc/php.d/bitrixenv.ini |
Вообще менять тут как минимум неверно) Это общие параметры всей машины. По умолчанию там должно быть:
Код |
---|
mbstring.func_overload = 2 default_charset = UTF-8 |
Переопределять их нужно или в конфигурации httpd этого сайта или в .htaccess файле.
Так же зависит от типа вашей машины: стабильная 7.4.3 или бета 7.4.11. В последней бете правили создание сайтов в кодировке windows-1251.
В версии 7.4.3 можно посмотреть в конфиг файл httpd для сайта по пути /etc/httpd/bx/conf/bx_ext_<ДОМЕН_САЙТА>.conf (сайт не дефолт, для дефолта аналогично), там увидите:
Код |
---|
... php_admin_value mbstring.func_overload 0 php_admin_value default_charset latin ... |
latin — тут ошибка, она исправлена в 7.4.11. Если посмотреть в 7.4.11 тот же конфиг /etc/httpd/bx/conf/bx_ext_<ДОМЕН_САЙТА>.conf
Код |
---|
... php_admin_value mbstring.func_overload 0 php_admin_value default_charset cp1251 ... |
то видим cp1251 — верное значение.
Если посмотрите конфиг файлы httpd для UTF-8 сайтов, то там этих строк не будет. Эти опции будут браться из файла /etc/php.d/bitrixenv.ini.
Кроме того чтобы система обновлений проекта работала после обновления для проекта в кодировке windows-1251 нужно для этого проекта в файле /bitrix/php_interface/dbconn.php добавить строку:
Код |
---|
mb_internal_encoding('windows-1251'); |
Это подправим в следующей бете 7.4.12.
Вячеслав Любовин, то есть вам надо вернуть php.ini к дефолтному состоянию, проверить httpd конфиг сайта, внести правки если нужно и добавить строку в dbconn.php. А параметр mbstring.internal_encoding скорей всего у вас в .htaccess, его закоментировать в этом файле.
Цитата |
---|
Александр Панишев написал: интересно а как быть в ситуации когда на серваке есть сайты и utf 8 и 1251 кодировки default_charset для всех один ведь и получается сайты надо переводить с 1251 на utf-8 |
Александр Панишев, как видите на одной машине могут работать сайты в двух кодировках без проблем, ничего переводить не надо)
Правила форума
1. Один вопрос — одна тема. Не надо задавать в той же теме другие вопросы.
2. Не пишите в чужих темах, если ваша проблема не имеет отношения к обсуждаемой.
3. Давайте полное описание проблемы — имя сайта, имя сервера, учётная запись, способ воспроизведения, скриншот ошибки.
4. Пароли выкладывать в форум — НЕ НАДО
-
lissyara
- Site Admin
- Сообщения: 6430
- Зарегистрирован: 2009-09-19, 22:04:41
Исправление кодировки на новых версиях php, для сайтов с cp1251 или koi8-r
по умолчанию, все версии php новее 5.5 шлют заголовок с типом содержимого text/hml и указанием кодировки — UTF8
соответственно ломается отображение сайтов с иными кодировками, т.к. браузер считает приоритеной кодировку из заголовка, а не прописанную в meta теге страницы.
если возможности перекодировать все страницы, базу и т.п. нет, а самих страниц много и каждая — отдельный файл то можно сделать такой костыль:
1. кладём в директорию с сайтом, или в директорию www (если сайтов много) файлик .htaccess c таким содержимым:
Код: Выделить всё
# file before all php scripts
php_value auto_prepend_file "/home/ИМЯ-АККАУНТА-НА-СЕРВЕРЕ/data/www/charset.php"
и фалик, по тому пути что в .htaccess указан, в данном случае /home/ИМЯ-АККАУНТА-НА-СЕРВЕРЕ/data/www/charset.php со следующим содержимым
всё. при обработке любых скриптов будет подключаться этот файл и выдаваться пустой заголовок с типом.
что приводит к тому что заголовок вообще не отсылается, а значит будет отображатсья в кодировке указанной в meta теге страницы, как и было в старых версиях php
Убей их всех! Бог потом рассортирует…
-
lissyara
- Site Admin
- Сообщения: 6430
- Зарегистрирован: 2009-09-19, 22:04:41
Исправление кодировки на новых версиях php, для сайтов с cp1251 или koi8-r
Сообщение
lissyara » 2016-03-20, 16:24:19
мда… а я знатный костыль нарисовал, вместо такого простого решения =)
—
для альтернативной версии php, кстати, тоже можно поменять.
открываем на редактирование файл php-bin-isp-php56/php.ini (если версия 5.6 соответственно) и правим в нём пункт
на
но это ровно до первой правки параметров проживёт. чтобы жило и дальше, надо ещё добавить такую же строчку
в файл php-bin-isp-php56/.php.ini
Убей их всех! Бог потом рассортирует…
-
WASP
- Сообщения: 5
- Зарегистрирован: 2016-07-14, 17:51:43
Исправление кодировки на новых версиях php, для сайтов с cp1251 или koi8-r
Сообщение
WASP » 2016-07-16, 16:51:01
Как не может быть? Вы посмотрите даты публикаций. Если б я размещал статью и она отображалась бы некорректно, а все остальное корректно — вряд ли бы я это не исправил бы.
Именно так — весь сайт отображался нормально. Кодировка сайта UTF-8, и сейчас она же в БД… Исправил в .htaccess на 1251, движок стал отображаться нормально, весь мой контент — нет.
Отправлено спустя 1 минуту 9 секунд:
Этот сайт — не суть важно, важно то, что я планировал перенос других сайтов сюда…
Кодировки
версия для печати
Мои сайты сделаны в кодировке windows-1251, включая БД. Возникла необходимость получить файл в кодировке UTF-8 (собираю dump-файл базы). Как оказалось, преобразование из одной кодировки в другую — задача не тривиальная. В этой статье я попытаюсь разложить по полочкам, что к чему. Поле деятельности: Apache/2.2.15 (Win32) PHP/5.3.5. Во внимание беру только две кодировки, UTF-8 и Windows-1251 (aka cp1251), но многое из сказаного относится к преобразованиям в любых кодовых страницах.
Прежде чем хвататься за клаву и «превращать воду в вино»..
часть Рекомендательная
Настройка кодировки PHP-препроцессора (php.ini или .htaccess), параметр default_charset. Он нужен для указания браузеру, в какой кодировке передается ответ (не обязательно html-страница). Это указание передается в заголовках (HTTP headers) ответа. Причем в мета-теге html-страницы может быть другая кодировка или не быть вообще, это отдельная история. Если в заголовках кодировка не указана, нормальный браузер (типа FireFox) пытается сам ее определить по содержимому или по мета-тегу, если он есть.
Аналогичная картина наблюдается для web-сервера Apache. Кодировка ставится директивой addDefaultcharset. Ее можно указывать в конфиге httpd-vhosts.conf (секция <directory>, потребуется перезапуск сервера), или в .htaccess сайта. Зачем нужна отдельная директива Apache? Это очевидно: на PHP свет клином не сошелся, web-сервер может и без него формировать ответы на запросы браузера, вот для таких ответов можно указывать конкретную кодировку.
Приведу несколько примеров получающихся заголовков.
Настройки PHP: windows-1251 (php.ini: default_charset=windows-1251)
HTTP/1.1 200 OK
…
Content-Type: text/html; charset=windows-1251
Настройки Apache: UTF-8 (.htaccess: addDefaultcharset UTF-8)
HTTP/1.1 200 OK
…
Content-Type: text/html; charset=UTF-8
Настройки PHP и Apache: не указана кодировка
HTTP/1.1 200 OK
…
Content-Type: text/html;
часть Функциональная (PHP)
Переключить кодировку PHP-препроцессора на время выполнения скрипта можно так:
ini_set(‘default_charset’,’UTF-8′);
С другой стороны, перед передачей ответа можно явно указать заголовок с кодировкой:
header (‘Content-Type: text/html; charset=windows-1251’);
Кодировка файла скрипта. PHP-файл — это обычный текстовик, все символы в нем кодируются набором байт с учетом установленной кодировки текста. Если в скрипте используются функции типа echo(), fwrite() и т.п., причем текст их параметров записан в этом же скрипте, то здесь так же важна кодировка самого файла скрипта! Пример файла some.php:
<?php echo 'Pусский текст в UTF-8'; ?>
Чтобы в браузере этот текст был действительно в UTF-8, кодировка файла с приведеным кодом должна быть UTF-8. Посмотреть и исправить кодировку файла можно, например, в Notepad++. У меня php-редактор (Blumentals Rapid PHP 2010) так же устанавливает кодировку для новых файлов.
БД, внешние файлы. Если кодировка текста, полученного из таблицы/файла/сайта, отличается от нужной, то придется перекодировать. В этом месте наконец-то можно использовать функции типа iconv(), utf8_encode(), ob_iconv_handler(), mb_output_handler() и т.п., а так же пользовательские функции перекодирования.
Назначение всех этих функций разное. Например, utf8_encode() поддерживает только следующее преобразование: ISO-8859-1 (aka Latin-1) > UTF-8. Две других функции, ob_iconv_handler() и mb_
output_handler(), можно использовать только как callback-функции для буфферизированного вывода (этот момент до меня долго доходил). Пример использования: здесь источником текста является сам скрипт (кодировка файла: UTF-8), настройки web-сервера и PHP не суть важны, в браузере можно переключиться.
echo 'русский текст в UTF-8<BR>'; iconv_set_encoding("internal_encoding", "UTF-8"); //"входящая" кодировка iconv_set_encoding("output_encoding", "WINDOWS-1251");//кодировка перед выдачей из буфера ob_start('ob_iconv_handler'); //назначаем доп. обработчик echo 'русский текст в WINDOWS-1251<BR>'; ob_end_flush();
Результатом в браузере будут две строки, первая будет читаться при выборе кодировки страницы «UTF-8» (см. в настройках браузера), вторая — «Кириллица (Windows-1251)». Это был учебный пример, реальное применение перекодирования «на лету»: нужно вернуть пользователю html-страницу в другой кодировке.
Замечание: если callback-функции в случае ошибки вернут «false» вместо новой строки, вывод информации не остановится и сообщений не будет, получится текст без перекодирования.
В моей задаче (получение UTF8-файла) пришлось применять функцию iconv() к каждой записываемой в файл строке.
Создание файла с нужной кодировкой. Тут вроде особых проблем нет, используем iconv() или сразу пишем в нужной кодировке. Зато есть ньюанс с UTF-8 файлами. Следующий код создает файл с кодировкой UTF-8 (файл скрипта в той же кодировке):
$text="русский текст, english textnВторая строка"; $file=fopen('some.txt','w+b'); //fwrite($file, pack("CCC",0xEF,0xBB,0xBF)); //Пишем сигнатуру UTF-8 fwrite($file, $text); fclose($file);
Некоторые программы не корректно определяют кодировку полученного файла. Выход: дописывать сигнатуру UTF-8 в начале файла. Для этого нужно раскоментировать строку (3). Что такое «сигнатура UTF-8«, цитата из Википедии:
«Порядок байтов (BOM, сигнатура)
Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). По наличию сигнатуры программы могут автоматически определить, является ли файл закодированным в UTF-8, однако файлы с такой сигнатурой могут некорректно обрабатываться старыми программами, в частности xml-анализаторами. Такие редакторы, как Notepad++, Notepad2 и Kate позволяют явно указывать, следует ли добавлять сигнатуру при сохранении UTF-файлов.»
Post Scriptum
Нашел на форумах пользовательскую функцию преобразования windows-1251 <-> UTF-8. Может пригодится когда-нибудь. У меня она работала криво в направлении Win -> UTF. Пофиксил, все работает:)
function Encode($str, $type='w2u'){ // 'u2w' - кодировать из UTF в win // 'w2u' - кодировать из win в UTF $conv=array (); for ($x=128; $x<=143; $x++){ $conv['utf'][]=chr(209).chr($x); $conv['win'][]=chr($x+112); } for ($x=144; $x<=191; $x++){ $conv['utf'][]=chr(208).chr($x); $conv['win'][]=chr($x+48); } $conv['utf'][]=chr(208).chr(129); $conv['win'][]=chr(168); $conv['utf'][]=chr(209).chr(145); $conv['win'][]=chr(184); if ($type=='u2w') return str_replace ($conv['utf'], $conv['win'], $str); elseif ($type=='w2u'){ //return str_replace ($conv['win'], $conv['utf'], $str); //баг $arr=array_combine($conv['win'], $conv['utf']);//корректно работает return strtr($str,$arr); } else return $str; n}
Баг был в
строке (20): функция str_replace() гонит на половине алфавита. Заменяет русскую win-букву на двухбайтное UTF-значение, а потом а этой замене опять заменяет первый байт(!), который в win-1251 так же соответствует букве, на UTF-значение. Причем другая половина алфавита нормально заменяется.
Таблица соответствия Unicode/UTF-8 <-> Windows-1251 (и не только) http://www.utf8-chartable.de
[1oo%, EoF]
Понравилась статья? Расскажите о ней друзьям: