2011-02-10 26 views
5

Tôi cần đặt php_value session.save_path trong .htaccess. Điều này dường như yêu cầu một đường dẫn đầy đủ, một đường dẫn tương đối dường như không hoạt động.làm cho php_value có điều kiện trong .htaccess?

Ứng dụng web của tôi chạy trên cả máy chủ Windows và Linux và tôi muốn giữ tệp .htaccess giống nhau trên cả hai hệ thống, vì lý do triển khai.

Có thể tham khảo các thư mục nơi .htaccess, trong tập tin .htaccess chính nó, một cái gì đó như thế này:

php_value session.save_path "<% systempath>/phiên"

với <% systempath> được tự động điền vào mỗi hệ thống?

+0

Câu hỏi thú vị. Nó có thể là có thể sử dụng các biến môi trường - Tôi không biết –

+0

Tham khảo: http://httpd.apache.org/docs/2.0/mod/mod_env.html#setenv –

Trả lời

1

Tôi không nghĩ rằng điều này là có thể với bất kỳ chỉ thị Apache nào.

Nhưng bạn có thể làm điều đó với PHP:

ini_set('session.save_path', dirname(__FILE__).'/sessions'); 

Đây __FILE__magic constant chứa đường dẫn hệ thống tập tin vào file PHP kịch bản hiện tại và dirname trả về thư mục cha của tệp đó.

+0

Thanx nhưng tôi muốn thay vì làm điều đó trong .htaccess vì tôi có nhiều tập lệnh sử dụng phiên. Với .htaccess tôi chỉ phải đặt đường dẫn này ở một nơi ... – Dylan

+0

+1 @Dylan: Apache không hỗ trợ sử dụng biến trong .htaccess. 'mod_env' cho phép bạn thiết lập các biến môi trường (chỉ) và' mod_rewrite' cho phép bạn sử dụng chúng trong các quy tắc và điều kiện viết lại, nhưng đó là nó. – netcoder

1

Tôi biết bạn có thể sử dụng một số biến môi trường.

Bạn có thể kiểm tra xem nó sẽ posible hay không với

%{ENV:variable} 
+0

Chỉ hoạt động trong 'mod_rewrite'. – netcoder

2

Bạn có thể tự động thêm vào trước một file php mà sẽ cấu hình php với ini_set()

# .htaccess 
php_value auto_prepend_file "autoprepend.php" 

Sau đó:

// autoprepend.php 
ini_set('session.save_path', __DIR__ . '/sessions'); 

Bằng cách này, nó sẽ hoạt động với bất kỳ tập lệnh php nào trong thư mục.

0

trong apache .htaccess ví dụ: chỉ áp dụng php_value chỉ một tệp php.

SetEnvIf Request_URI ".php$" IS_PHP 
<If "-T env('IS_PHP')"> 
    php_value auto_prepend_file "./init.php" 
</If> 
Các vấn đề liên quan