Kiểm tra xem tôi có được phép sử dụng ini_set
cho một số option
không?
ini_set
sẽ trả lại giá trị cũ thành công và false
* về lỗi. Với kiến thức này, bạn có thể viết một câu lệnh kiểm tra xem cuộc gọi của bạn có đi qua không, như dưới đây.
$result = ini_set ("some_option", "some_value");
$failure = (version_compare(PHP_VERSION, '5.3.0') >= 0) ? false : '';
if ($result === $failure)
echo "Unable to use ini_set to change 'some_option'!";
(*): Lưu ý giá trị trả về thay đổi trong PHP 5.3.0 từ ''
(một chuỗi rỗng) để false
. Vì vậy, bạn cần phải kiểm tra phiên bản PHP hiện tại của bạn là tốt.
phương pháp khác là sử dụng ini_get_all
mà sẽ cung cấp cho bạn với các chi tiết liên quan đến tất cả các tùy chọn có sẵn, và nó access level.
$all_option_details = ini_get_all();
/* see the comments in this post regarding PHP_INI_USER vs INI_USER
* seems like someone writing the relevant PHP documentation fcuked up
*
* props to @soulmerge */
if ($all_option_details['upload_max_filesize']['access'] & INI_USER)
echo "we are allowed to change upload_max_filesize from with ini_set!";
Tôi muốn vô hiệu hóa việc sử dụng các ini_set
đối với một số tùy chọn (s), làm thế nào?
Có một vài phương pháp tạo tùy chọn thời gian chạy không thể thay đổi (theo cách tắt ini_set
), trong số đó là hai phương pháp bạn có thể đọc thêm tại liên kết được cung cấp.
php_admin_valuetên giá trị
Thiết lập giá trị của chỉ thị quy định. Điều này không thể được sử dụng trong các tập tin .htaccess. Bất kỳ loại chỉ thị nào được đặt với php_admin_value không thể bị ghi đè bởi .htaccess hoặc ini_set(). Để xóa giá trị đã đặt trước đó, hãy sử dụng giá trị không được đặt làm giá trị.
php_admin_flagtên on | off
Được sử dụng để thiết lập một chỉ thị cấu hình boolean. Điều này không thể được sử dụng trong các tập tin .htaccess. Bất kỳ loại chỉ thị nào được đặt với php_admin_flag không thể bị ghi đè bởi .htaccess hoặc ini_set().
Ví dụ (lấy từ this tài liệu)
<IfModule mod_php5.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag engine on
</IfModule>
<IfModule mod_php4.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag engine on
</IfModule>
Chặn? ai sẽ thay đổi cài đặt ini trên máy chủ của bạn? –
Tôi nghĩ bạn không thể chặn chúng. Các cài đặt bạn có thể đặt trong thời gian chạy được phép đặt. – djot
đọc nhận xét này: http://www.php.net/manual/en/function.ini-set.php#30424 – yasar