2012-08-17 34 views
8

Tôi có một trang web (dựa trên khung công tác ZEND) và được lưu trữ trên máy chủ 1and1.Cách sử dụng phiên bản php riêng biệt cho các tệp php khác nhau

Máy chủ 1and1 sử dụng phiên bản PHP 5.2.17 và 5.4.5. Tôi chỉ cần sử dụng phiên bản PHP 5.4.5 cho một vài tệp. Điều này là do một số tệp khác của tôi hiển thị lỗi nếu tôi sử dụng PHP 5.4.5 nhưng chúng thực thi tốt bằng cách sử dụng PHP 5.2.17.

On .htaccess tôi nộp dòng dưới đây được viết trước đó để sử dụng PHP 5.2.17

AddType x-mapp-php5 .php 

Để sử dụng PHP 5.4.5 Tôi đã sử dụng các dòng dưới đây (hướng dẫn sử dụng đoạn mã này sẽ tìm thấy trên trang 1and1 faq)

AddHandler x-mapp-php6 .php 

FAQ url (s):

Có cách nào để sử dụng PHP 5.4.5 cho các tệp cụ thể đó không?

Tôi cố gắng để sử dụng dòng dưới đây trong .htaccess, nhưng nó không làm việc:

AddType x-mapp-php5 .php 
AddHandler x-mapp-php6 FilenameController.php 

EDIT

tôi đã cố gắng để chỉnh sửa mã 5.2. Tôi đang sử dụng gói PEAR để tạo ra tính Excel mà là làm việc tốt với PHP 5.2.17 nhưng hiển thị các lỗi dưới đây trên PHP 5.4.5

Fatal error: Cannot redeclare _PEAR_call_destructors()

Phụ Lục

Sự thay đổi này cho .htaccess tập tin

AddType x-mapp-php5 .php 
AddHandler x-mapp-php6 .php6 
SetEnv APPLICATION_ENV development 
Options -MultiViews 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteRule ^FilenameController\.php$ FilenameController.php6 [L] 

    RewriteCond %{REQUEST_FILENAME} -s [OR] 
    RewriteCond %{REQUEST_FILENAME} -l [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^.*$ - [NC,L] 

    RewriteRule ^.*$ index.php [NC,L] 
</IfModule> 

tạo lỗi 404 "Không tìm thấy trang" nếu tôi thay đổi tên tệp của FilenameController.php thành FilenameController.php6 và khi tôi đang cố gắng truy cập trang tạo của nó.

+11

Tại sao bạn không sửa mã PHP 5.2 của mình để làm việc với phiên bản PHP được hỗ trợ thay thế? – Leigh

+0

Tôi sẽ yêu cầu làm việc trên 5-6 tệp để sửa lại. Nếu tôi không nhận được bất kỳ giải pháp nào để sử dụng phiên bản PHP riêng biệt, tôi sẽ không có cách nào khác ngoài việc làm việc trên các tệp đó. – Debashis

+0

Đây sẽ là một ý tưởng tồi ngay cả khi các tệp của bạn độc lập, nhưng bạn đang sử dụng một khung công tác, có nghĩa là chúng phụ thuộc vào nhau. Điều gì sẽ xảy ra nếu một yêu cầu cần tệp từ cả hai nhóm đó? Sửa mã của bạn để làm việc với một phiên bản duy nhất. – Maerlyn

Trả lời

5

Tại sao không chỉ

AddHandler x-mapp-php6 .php6 

Và đổi tên 5.4 script của bạn để PHP6? Bạn thậm chí có thể ẩn này từ người sử dụng bằng cách làm như sau trong tập tin .htaccess của bạn:

RewriteEngine On 
RewriteBase /
RewriteRule ^FilenameController\.php$ FilenameController.php6 [L] 

này làm một hướng nội bộ để mở rộng .php6 cho rằng một file script. :-)

Tuy nhiên, hãy để tôi nhấn mạnh: bạn chỉ có thể chọn công cụ tạo tập lệnh nào sử dụng trên cơ sở theo yêu cầu không dựa trên cơ sở cho mỗi tệp. Ví dụ: http:/yourdomain.com/FilenameController.php sẽ được xử lý bởi PHP 5.4 RTS và tất cả các tệp được bao gồm sẽ được biên dịch và thực thi bằng cách sử dụng PHP 5.4; http:/yourdomain.com/index.php sẽ được xử lý bởi PHP 5.2 RTS và tất cả các tệp được bao gồm sẽ được biên dịch và thực thi bằng cách sử dụng PHP 5.2.

Bạn không thể sử dụng 5.4 để biên dịch trên tệp trong ứng dụng và 5.2 để biên dịch phần còn lại.

+0

Đã không thành công theo cách này. Thêm vào những dòng một trên htaccess 'code'AddType x-Mapp-php5 .php AddHandler x-Mapp-PHP6 .php6 setenv APPLICATION_ENV phát triển Tùy chọn -MultiViews RewriteEngine On RewriteBase / RewriteRule^FilenameController \ .php $ FilenameController.php6 [L] RewriteCond% {REQUEST_FILENAME} -s [OR] RewriteCond% {REQUEST_FILENAME} -l [OR] RewriteCond% {REQUEST_FILENAME} -d RewriteRule^* $ -. [ NC, L] RewriteRule ^. * $ Index.php [NC, L] Debashis

+0

Sau khi thay đổi tên tệp của FilenameControlle r.php để FilenameController.php6, bất cứ khi nào tôi đang cố gắng truy cập vào trang của nó tạo ra lỗi 404 và hiển thị "Trang không tìm thấy". – Debashis

+0

Không còn cách nào khác? – Debashis

1

1and1 server uses PHP version 5.2.17 and PHP version 5.4.5.

Tôi tò mò muốn biết chi tiết về điều này.

Giả sử bạn chạy php làm mô-đun Apache (mod_php), bạn chỉ có thể có một phiên bản chạy trên cùng một cài đặt Apache cùng một lúc. Bạn có chắc chắn rằng máy chủ của bạn thậm chí cho phép sử dụng cả hai cùng một lúc? Nhiều khả năng, bạn có thể khởi động lại Apache và chạy nó với một phiên bản khác. Nếu đó là trường hợp, bạn có thể không thực sự cấu hình theo cách của bạn ra khỏi này, vì sợ rằng bạn muốn thiết lập php trên cgi.

+0

Xin hãy xem xét những điều này. A) http://faq.1and1.com/scripting_languages_supported/php/6.html và B) http://faq.1and1.com/scripting_languages_supported/php/7.html – Debashis

+0

OK. Họ xuất hiện để chạy php thông qua cgi ('Server API: CGI/FastCGI'). Trong trường hợp đó, có thể, mặc dù tôi không biết cụ thể là gì. – troelskn

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