PHP 分這四種模式,及它可以設定的地方
- PHP_INI_USER – 只能在 php 的 ini_set() 、與 檔案 .user.ini (php 5.3 後support)
- PHP_INI_PERDIR – 只在 /etc/php.ini、.htaccess、httpd.conf、 .user.ini (php 5.3 後 support)
- PHP_INI_SYSTEM – 只在 php.ini 與 httpd.conf
- PHP_INI_ALL – 能在任何地方
如果 PHP 是跑 apache module (mod_php) 時可以強制在 virtualhost 裡使用 php_admin_flag or value 讓 .htaccess 裡面 php_flag or value 的值無效,連同 ini_set() 也是
不過 .user.ini 在 PHP 5.3 版本後出現了,它也只用於 CGI/fastCGI 環境
現在 PHP 用 CGI 或 fastCGI 跑是很常見的,我竟現在才發現 .user.ini 這東東,它可以放在網站目錄底下設定想要的 PHP 參數,而且 它是不受 Loaded Configuration File 限制 (PHPINFO看得到),這是多麼危險啊,fastCGI/CGI 是連讓 ini_set() 也沒限到
意思是說我設置某個 virtualhost 的 memory_limit = 128M
(我會針對每個 virtualhost 設置自已的 php.ini)
但底下這樣子就可以改變我的限制
# xx.php ini_set('memory_limit','1024M');
# /var/www/html/ssorc.tw/.user.ini memory_limit = 2048M
怎麼防止使用 .user.ini,就在個別的 php.ini 裡設置如下,空值
user_ini.filename = ""
但 ini_set() 呢,只能用 disable_function = ‘ini_set’ 嗎,像用 apache module (mod_php) 時,我可以用 php_admin_flag or value 限制我想限制的,就不會讓 ini_set() 不能用
我列出 .user.ini 可被成功設定生效的參數 (我常用的),有(# ————-)符號就是
sendmail_path = "/usr/sbin/sendmail -t -i -f [email protected]" sendmail_from = “[email protected]" # ------------- open_basedir = "/var/www/html/ssorc.tw:/tmp/ssorc.tw" upload_tmp_dir = "/tmp/ssorc.tw" session.save_path = "/tmp/ssorc.tw" safe_mode = "Off" disable_functions = "exec,passthru,proc_open,shell_exec,system,popen,dl" memory_limit = "123M" # ------------- post_max_size = "123M" # ------------- upload_max_filesize = "123M" # ------------- allow_url_fopen = "Off" file_uploads = "On" max_execution_time = "30" # ------------- max_file_uploads = "20" # ------------- register_globals = "Off" output_buffering = "4096" error_reporting = "6143" expose_php = "Off" log_errors = "On" # ------------- display_errors = "Off" # ------------- magic_quotes_gpc = "Off" max_input_time = "60" # ------------- register_argc_argv = "Off" # ------------- register_long_arrays = "Off" allow_call_time_pass_reference = "Off" include_path = ".:" # -------------
其它相關文章
Apache 使用 mod_php 讓 VH 有獨立的 php.ini 檔
php_flag + php_value + Apache 在不更改 php.ini 的情況下更改預設值
Apache + 可以限制 .htaccess 只能使用某些參數嗎
留言
php+ user.ini + fastcgi 不能用 ?? .user.ini 限制 fastcgi 不能用 ?? 在 domain/php.ini 裡新增 user_ini.filename = “” 但 ini_set() 只能 disable_function 嗎 ?? http://forum.sp.parallels.com/threads/php-5-3-run-as-fastcgi-application.327644/