|
|
 |
When using PHP as an Apache module, you can also change the
configuration settings using directives in Apache configuration
files (e.g. httpd.conf) and .htaccess files. You will need
"AllowOverride Options" or "AllowOverride All" privileges to do so.
With PHP 4 and PHP 5, there are several Apache directives that allow you
to change the PHP configuration from within the Apache configuration
files. For a listing of which directives are
PHP_INI_ALL, PHP_INI_PERDIR,
or PHP_INI_SYSTEM, have a look at the table
found within the ini_set() documentation.
注:
With PHP 3, there are Apache directives that correspond to each
configuration setting in the php3.ini name,
except the name is prefixed by "php3_".
- php_value
name
value
Sets the value of the specified directive.
Can be used only with PHP_INI_ALL and PHP_INI_PERDIR type directives.
To clear a previously set value use none as the value.
注:
Don't use php_value to set boolean values.
php_flag (see below) should be used instead.
- php_flag
name
on|off
Used to set a boolean configuration directive.
Can be used only with PHP_INI_ALL and
PHP_INI_PERDIR type directives.
- php_admin_value
name
value
Sets the value of the specified directive.
This can not be used in .htaccess files.
Any directive type set with php_admin_value
can not be overridden by .htaccess or virtualhost directives.
To clear a previously set value use none as the value.
- php_admin_flag
name
on|off
Used to set a boolean configuration directive.
This can not be used in .htaccess files.
Any directive type set with php_admin_flag
can not be overridden by .htaccess or virtualhost directives.
例子 9-2. Apache configuration example <IfModule mod_php5.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php4.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
php3_include_path ".:/usr/local/lib/php"
php3_safe_mode on
</IfModule> |
|
| 注意 |
PHP constants do not exist outside of PHP. For example, in
httpd.conf you can not use PHP constants
such as E_ALL or E_NOTICE
to set the error_reporting
directive as they will have no meaning and will evaluate to
0. Use the associated bitmask values instead.
These constants can be used in php.ini
|
When running PHP on Windows, the configuration values can be
modified on a per-directory basis using the Windows registry. The
configuration values are stored in the registry key
HKLM\SOFTWARE\PHP\Per Directory Values,
in the sub-keys corresponding to the path names. For example, configuration
values for the directory c:\inetpub\wwwroot would
be stored in the key HKLM\SOFTWARE\PHP\Per Directory
Values\c\inetpub\wwwroot. The settings for the
directory would be active for any script running from this
directory or any subdirectory of it. The values under the key
should have the name of the PHP configuration directive and the
string value. PHP constants in the values are not parsed.
Regardless of how you run PHP, you can change certain values at runtime
of your scripts through ini_set(). See the documentation
on the ini_set() page for more information.
If you are interested in a complete list of configuration settings
on your system with their current values, you can execute the
phpinfo() function, and review the resulting
page. You can also access the values of individual configuration
directives at runtime using ini_get() or
get_cfg_var().
add a note
User Contributed Notes
How to change configuration settings
phpdocs at varrqnuht dot net
17-Jun-2004 12:57
If PHP is working for you but an 'apachectl configtest' gives you errors
such as:
Invalid command 'php_admin_flag', perhaps mis-spelled or
defined by a module not included in the server configuration
This
may be due to that way the PHP module is loaded in your httpd.conf config
file. I noticed this problem on an Apache 1.3.x server which was running
mod_ssl - the LoadModule and AddModule directives for PHP had been inserted
inside an <IfDefine SSL> block, so PHP worked when the server was
started in ssl mode (which was always), but the configtest failed because
the SSL flag wasn't set.
The fix for this is to make sure that the
LoadModule and AddModule lines for PHP are outside that block - I just
moved mine in front of it and now everything is fine.
| |