2011-06-22 37 views
7

hệ thống: Debian Lenny/Apache 2.2/php5.3.3 biên soạn từ các nguồnphp5.3.3 date.timezone chỉ thị lại php.ini không đưa vào tài khoản

Tôi strugglying với date.timezone trong php.ini.

Tôi có thể xác định TZ sử dụng trong mã nguồn php nhưng tôi muốn sửa lỗi đó ngay lập tức trong tệp ini.

mã php: Ok

date_default_timezone_set('Europe/Berlin'); 

php.ini: Không đưa vào xem xét nếu không thiết lập bên trong mã nguồn

date.timezone = 'Europe/Berlin' 

Tôi cũng kiểm tra rằng tôi sửa đổi quyền tệp php.ini và có sự can thiệp với một số tệp php.default.ini.
Tôi đã kiểm tra trong các tập tin cấu hình apache cho dù sẽ có một dữ liệu enz TZ can thiệp, nhưng không có.

Không biết phải làm gì nhiều hơn, vì vậy, mọi gợi ý sẽ được hoan nghênh,

trước thx.

EDIT: Tôi cũng đã thử không có dấu ngoặc đơn hoặc dấu ngoặc đơn hoặc dấu ngoặc kép là date.timezone = 'Europe/Berlin' nhưng tôi vẫn nhận được "không có giá trị" trong phpinfo.

EDIT2: Cả phpinfo() và dưới đây trở lại kịch bản thử nghiệm rằng date.timezone trống (ví dụ như không có giá trị.):

date_default_timezone_set('America/Los_Angeles'); 
$script_tz = date_default_timezone_get(); 
$iniset = ini_get('date.timezone') ; 
if (strcmp($script_tz, $iniset)){ 
    echo "Script timezone ($script_tz) differs from ini-set timezone ($initset)."; 
} else { 
    echo "Script timezone ($script_tz) and ini-set timezone match."; 
} 

EDIT3: hum, tôi đoán tôi thấy sthg trong php.ini:

Configuration File (php.ini) Path : /usr/local/php533/php.ini 
Loaded Configuration File : VOID ! 

vì vậy, tôi phải tìm cách để đảm bảo Apache đang tìm kiếm các php.ini ngay bằng cách nào đó ...

+0

*** Lưu ý: *** file 'php.ini' Lệnh' php-cli' là khác nhau sau đó 'file 'php.ini' apache2' của. Tôi đề nghị tượng trưng liên kết với nhau để giữ cho chúng được đồng bộ và tránh nhầm lẫn! –

Trả lời

2

Hy vọng nó có thể giúp những người khác trên của debian như distro:

SOLVED:
cần thiết để nói cho Apache để nạp muốn php.ini tập tin

Bối cảnh:
PHP nạp như một module Apache (ví dụ như DSO)

CÁCH trong ngắn hạn:
vỏ ENV

PHP_INI_SCAN_DIR=/pathtophpini 
export PHP_INI_SCAN_DIR 

http.conf

# ... 
# DSO Modules: PHP as an Apache module 
SetEnv PHPRC /usr/pathtophpini 
SetEnv PHP_INI_SCAN_DIR /usr/pathtophpini 

LoadModule php5_module /pathtophpmod/libphp5.so 
PHPINIDir /pathtophpini 
# ... 

Shell

/etc/init.d/apache2 restart 

Bây giờ chỉ cần kiểm tra xem các tập tin cấu hình được nạp php.ini là một trong những quyền hoặc bằng cách sử dụng php-cli trong commandline hoặc phpinfo():

/path/to/your/phpcli/bin/php -i | grep php.ini | tail -n2 
# which gives you the expected answer 
Configuration File (php.ini) Path => /pathtophpini/php.ini 
Additional .ini files parsed => /pathtophpini/php.ini 

Một số chi tiết tài liệu:
trên điểm rất cụ thể đó, miễn là có rất ít tài liệu về chủ đề đó, vì đây là một loại chủ đề có trách nhiệm được chia sẻ giữa apache và các vấn đề về php:
on stackoverflow
on php manual
askapache

+0

Nó muốn được tốt để chỉ ra rằng cho biến shell nó mong đợi một thư mục, nhưng cấu hình apache muốn đường dẫn đến ini thực tế tôi nghĩ. – redreinard

6

Tôi nghĩ rằng bạn đang thiếu các dấu ngoặc kép:

date.timezone = "Europe/Berlin" 

Giá trị là một chuỗi theo: ini.date.timezone on PHP.net mà phải được bọc trong dấu ngoặc kép.

+0

Thx nhưng đó không phải là điểm trong trường hợp của tôi. – hornetbzz

+0

Không đúng! Chỉ thị 'php.ini'' date.timezone' mong đợi một chuỗi ổn, nhưng các dấu ngoặc kép KHÔNG bắt buộc. Điều đó không giống như thay thế thời gian chạy: 'date_default_timezone_set ('Europe/Berlin');' mà (ngay bên trong mã php) không yêu cầu báo giá. Chỉ cần thiết lập điều đúng! ;) –

Các vấn đề liên quan