2010-07-12 26 views
5

cho dự án của chúng tôi, chúng tôi cần đặt một số giá trị PHP tùy thuộc vào môi trường (phát triển/sản xuất), đáng chú ý nhất là lưu đường dẫn phiên và một số cài đặt truy tìm và lược tả..htaccess Đặt giá trị PHP tùy thuộc vào Tên máy chủ

Chúng tôi không muốn đặt chúng trong tập lệnh PHP vì do một số mã di sản khủng khiếp cần nhiều thay đổi và chúng tôi không muốn thay đổi .htaccess mỗi lần trước khi commit nó vào git (nhưng chúng tôi yêu cầu .htaccess phải ở trong kiểm soát nguồn).

Có cách nào để làm một cái gì đó như thế này trong .htaccess:

if (hostname == "dev.example.com") { 
    php_value session.save_path /tmp 
    [...] 
} 

Trả lời

6

Bạn có thể xác định quy tắc trong cấu hình virtualhost Apache (một bước trên .htaccess, bạn sẽ phải tự hỏi một quản trị viên để chỉnh sửa này):

<VirtualHost *:80>                
    ServerName piskvor.example.com 
    ServerAlias *.host2.example.com 
    php_value session.save_path /home/piskvor/tmp 
</VirtualHost> 
<VirtualHost *:80>                
    ServerName someotherhost.example.org 
    php_value session.save_path /tmp 
</VirtualHost> 

này cung cấp cho bạn khả năng cấu hình mỗi lưu trữ khác nhau (theo tên máy chủ hoặc ký tự đại diện máy chủ). Hầu hết các thiết lập Apache mới hơn đều hỗ trợ điều này.

0

Tại một công việc trước đây chúng tôi đã sử dụng sử dụng như sau:

<IfDefine SERVER1> 
    php_value session.save_path /tmp1 
</IfDefine> 

<IfDefine SERVER2> 
    php_value session.save_path /tmp2 
</IfDefine> 

bạn muốn sau đó starup apache với công tắc bổ sung:

-D SERVER1 SERVER2

EDIT:

EDIT

Có lẽ giống như sau có thể là một trung đất?

if (!file_exists('.htaccess')) { 

    copy('.htaccess.default', '.htaccess'); 

    $handle = fopen('.htaccess', 'a'); 

    switch ($_SERVER['HTTP_HOST']) { 

    case 'dev.site': 
     fwrite($handle, 'php_value .....' . "\n"); 
     fwrite($handle, 'php_value .....' . "\n"); 
    break; 

    case 'live.site': 
     fwrite($handle, 'php_value .....' . "\n"); 
     fwrite($handle, 'php_value .....' . "\n"); 
    break; 

    } 

    fclose($handle); 

} 
+0

Đây là một bước đi đúng hướng nhưng quản trị viên chắc chắn sẽ chặn điều này. Tôi sẽ cố gắng thương lượng với họ nhưng tôi vẫn hy vọng cho một cái gì đó giới hạn .htaccess – dbemerlin

+0

Điều này không thực sự đặt ra bất kỳ rủi ro bảo mật tuy nhiên, tôi khá chắc chắn thats linh hoạt như .htaccess là sẽ nhận được. Làm thế nào về một kịch bản PHP mà viết vào .htaccess âm thầm? –

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