Có cách nào để sử dụng hai phiên bản PHP trong XAMPP không?


157

Chúng tôi đang chạy XAMPP với PHP 7.0 vì các sản phẩm mới của chúng tôi yêu cầu PHP 7.

Nhưng có những dự án cũ sử dụng các hàm như mysql_connect, v.v. Những dự án được loại bỏ trong PHP 7.0.

Vậy, có cách nào để dễ dàng thay đổi các phiên bản PHP trong XAMPP không?

Lưu ý : Vui lòng không đề xuất nâng cấp dự án cũ để tương thích với các phiên bản mới vì tôi không ở vị trí để thực hiện vì những quyết định đó tôi không thể nhận được với tư cách là nhà phát triển (chỉ là nhân viên).


Tôi không nghĩ có một cách giải quyết cho những gì bạn muốn làm ngoài việc nâng cấp. Ngoài ra, bạn không nên tìm cách làm cho API tương thích cũ và không dùng nữa. Chúng nên được loại bỏ hoàn toàn. Rõ ràng đó là rất nhiều công việc, nhưng nó sẽ đảm bảo sự an tâm
Rotimi

1
Tôi dừng và khởi động Apache khi tôi muốn chuyển đổi các phiên bản PHP trong MAMP. Đó là một nỗi đau, nhưng nó hoạt động.
Scott C Wilson

bạn có thể khởi động kép

bạn có thể tạo máy chủ ảo sau đó chỉ định phiên bản php cho từng người
Aref Ben Lazrek

2
@IlmariKaronen Tôi muốn chuyển đổi giữa chúng trên máy trạm phát triển của bạn. Đơn giản là tôi muốn sử dụng PHP 5 khi tôi đang làm Project A, tôi muốn PHP 7 khi tôi đang làm Project B. Ngay cả câu trả lời được đánh giá cao nhất cũng không hoạt động, tôi không thể tìm thấy nó ... Và nhiều người dùng ..
Tôi là người ngu ngốc nhất

Câu trả lời:


133

Tại sao phải chuyển đổi giữa các phiên bản PHP khi bạn có thể sử dụng nhiều phiên bản PHP cùng một lúc với một cài đặt xampp ? Với một cài đặt xampp, bạn có 2 tùy chọn:

  1. Chạy phiên bản PHP cũ hơn chỉ cho thư mục của dự án cũ của bạn: Điều này sẽ phục vụ mục đích hầu hết thời gian, bạn có thể có một hoặc hai dự án cũ mà bạn dự định chạy với phiên bản PHP cũ hơn. Chỉ cần cấu hình xampp để chạy phiên bản PHP cũ hơn cho các thư mục dự án.

  2. Chạy phiên bản PHP cũ hơn trên một cổng xampp riêng biệt: Đôi khi bạn có thể nâng cấp và dự án cũ lên phiên bản PHP mới nhất khi bạn cần chạy cùng một dự án trên phiên bản PHP mới và cũ hơn. Sau đó, bạn có thể đặt phiên bản PHP cũ hơn trên một cổng khác (giả sử là 8056) để khi bạn vào http://localhost/any_project/xampp chạy PHP 7 và khi bạn đi đến http://localhost:8056/any_project/xampp chạy PHP 5.6.

  3. Chạy phiên bản PHP cũ hơn trên virtualhost: Bạn có thể tạo một máy chủ ảo như localhost56 để chạy PHP 5.6 trong khi bạn có thể sử dụng PHP 7 trên localhost.

Hãy thiết lập nó.

Bước 1: Tải xuống PHP

Vì vậy, bạn có PHP 7 chạy dưới xampp, bạn muốn thêm phiên bản PHP cũ hơn vào nó, giả sử PHP 5.6. Tải xuống phiên bản nts (Non Thread Safe) của kho lưu trữ zip PHP từ php.net (xem lưu trữ cho các phiên bản cũ hơn) và giải nén các tệp bên dưới c:\xampp\php56. Phiên bản an toàn của chủ đề không bao gồm php-cgi.exe.

Bước 2: Cấu hìnhphp.ini

Mở c:\xampp\php56\php.initập tin trong notepad. Nếu tập tin không tồn tại bản sao php.ini-developmentđể php.inivà mở nó bằng notepad. Sau đó bỏ dòng sau:

extension_dir = "ext"

Bước 3: Cấu hình apache

Mở bảng điều khiển xampp, nhấp vào nút cấu hình cho apache và nhấp Apache (httpd-xampp.conf). Một tệp văn bản sẽ mở ra, đặt các cài đặt sau ở dưới cùng của tệp:

ScriptAlias /php56 "C:/xampp/php56"
Action application/x-httpd-php56-cgi /php56/php-cgi.exe
<Directory "C:/xampp/php56">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

Lưu ý: Bạn có thể thêm nhiều phiên bản PHP vào cài đặt xampp của mình theo bước 1 đến 3 nếu muốn.

Bước 4 (tùy chọn 1): [Thêm thư mục để chạy phiên bản PHP cụ thể]

Bây giờ bạn có thể thiết lập các thư mục sẽ chạy trong PHP 5.6. Chỉ cần thêm phần dưới đây vào dưới cùng của tệp cấu hình để đặt thư mục.

<Directory "C:\xampp\htdocs\my_old_project1">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</Directory>

<Directory "C:\xampp\htdocs\my_old_project2">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</Directory>

Bước 4 (tùy chọn 2): [Chạy phiên bản PHP cũ hơn trên một cổng riêng]

Bây giờ để đặt PHP v5.6 thành cổng 8056, hãy thêm đoạn mã sau vào dưới cùng của tệp cấu hình.

Listen 8056
<VirtualHost *:8056>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</VirtualHost>

Bước 4 (tùy chọn 3): [Chạy phiên bản PHP cũ hơn trên virtualhost]

Để tạo một Virtualhost (localhost56) trên một thư mục (htdocs56) để sử dụng PHP v5.6 trên http: // localhost56 , hãy tạo thư mục htdocs56 tại vị trí mong muốn của bạn và thêm localhost56 vào tệp máy chủ của bạn ( xem cách ) ở dưới cùng của tệp httpd-xampp.conf.

<VirtualHost localhost56:80>
    DocumentRoot "C:\xampp\htdocs56"
    ServerName localhost56
    <Directory "C:\xampp\htdocs56">
        Require all granted    
    </Directory>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</VirtualHost>

Kết thúc: Lưu và khởi động lại Apache

Lưu và đóng tệp cấu hình, Khởi động lại apache từ bảng điều khiển xampp. Nếu bạn đã chọn tùy chọn 2, bạn có thể thấy cổng bổ sung (8056) được liệt kê trong bảng điều khiển xampp của bạn.

nhập mô tả hình ảnh ở đây

Cập nhật cho Lỗi:
tiêu đề không đúng từ tập lệnh 'php-cgi.exe': Tiêu đề xấu

Nếu bạn gặp phải lỗi trên, hãy mở httpd-xampp.conflại và nhận xét dòng sau với dấu # (ký tự băm) hàng đầu.

SetEnv PHPRC "\\path\\to\\xampp\\php"

9
Xin chào, tôi đã thử phương pháp này (Bước 4 Tùy chọn 1), nhưng gặp lỗi tiêu đề không đúng từ tập lệnh 'php-cgi.exe': Tiêu đề xấu: <br />, bất kỳ ý tưởng nào có thể là vấn đề?
Priyanshu

@Priyanshu cài đặt PHP của bạn có ổn không? Bạn có thể chạy các tệp PHP từ dòng lệnh như không php somefile.phpcó lỗi nào không?
Munim Munna

2
Câu trả lời thậm chí không còn chứa mã để bao gồm SetEnv PHPRCvì vậy tôi không thể nhận xét nó, nhưng tôi vẫn nhận được lỗi đó. :(
Brett

1
Chào. Khi tôi chạy localhost: 8056, tôi nhận được trang không tìm thấy đối tượng.
nas

1
ai đó có thể làm việc nhiều phiên bản php với xdebug? tôi đã nhậnError message: End of script output before headers: php-cgi.exe
Noman

87

Bạn có thể tải xuống bất kỳ phiên bản PHP nào bạn cần và đặt chúng vào các thư mục riêng của chúng, vd

c:\php5\

c:\php7\

Tất cả những gì bạn cần làm là báo cho máy chủ web của bạn (Apache) sử dụng phiên bản PHP nào, bạn sẽ làm gì bằng cách tải mô-đun thích hợp. Trong Apache, bạn có thể làm điều này bằng cách tìm tệp httpd.confvà sau đó chỉnh sửa dòng thích hợp:

LoadModule php7_module c:\php7\libphp7.so

Tất nhiên bạn sẽ phải tìm ra những con đường chính xác - đây chỉ là minh họa.

Lưu httpd.confvà khởi động lại máy chủ của bạn. Lưu ý, nếu bạn không khởi động lại nó, những thay đổi sẽ không có hiệu lực.

Không có chuyển đổi GUI để có thể làm điều này, bạn cần chỉnh sửa .conftệp và sau đó khởi động lại Apache. Làm điều này chỉ mất vài giây và bạn thậm chí có thể nhận xét một phiên bản để "chuyển đổi" chỉ mất một vài lần nhấn phím, ví dụ:

Sử dụng PHP 5:

LoadModule php5_module c:\php5\libphp5.so
#LoadModule php7_module c:\php7\libphp7.so

Sử dụng PHP 7:

#LoadModule php5_module c:\php5\libphp5.so
LoadModule php7_module c:\php7\libphp7.so

Bạn không cần nhiều phiên bản XAMPP hoặc khởi động kép hoặc sử dụng một máy khác hoặc bất kỳ "giải pháp" nào khác đã đề xuất cách giải quyết phức tạp. OP muốn sử dụng XAMPP và cho nó biết phiên bản PHP nào sẽ sử dụng. Đây là cách nhanh nhất và hiệu quả nhất để thực hiện và chỉ cần một cài đặt XAMPP.

Chỉnh sửa ngày 1 tháng 11 năm 2017: Rõ ràng một số người đang nói rằng không có .sotệp nào trên Windows. Câu trả lời tôi đưa ra được điều chỉnh từ cách tôi thiết lập mọi thứ trên máy Mac của mình (sử dụng .socác tệp thay vì .dll). Nguyên tắc của câu trả lời tuy nhiên vẫn chính xác. Bạn đang sử dụng tệp cấu hình của Apache, httpd.confđể chỉ định vị trí mô-đun PHP ( .sohoặc .dll) nằm trên hệ thống của bạn. Vì vậy, sự khác biệt duy nhất cho Windows sẽ là tên tệp và / hoặc vị trí đường dẫn. Câu trả lời tôi đã đưa ra cũng đúng cho việc cài đặt vanilla của Apache / PHP (hoàn toàn không có XAMPP).


3
Tôi lại kiểm tra. Tôi không thể tìm thấy nó. Bạn có thể vui lòng kiểm tra tập tin httpd.conf của tôi không. Đây là bản sao của nó. freetexthost.com/sjxz4lh1i5 Xin vui lòng cho tôi biết nếu bạn tìm thấy dòng mà tôi nên thay đổi.
Tôi là người ngu ngốc nhất

2
Không có bất kỳ libphp7.so nào vào XAMPP và bất kỳ chuỗi LoadModule nào vào tệp conf
Federico Schiocchet

2
Tôi cũng không thể tìm thấy mục này. Tôi cũng đã tìm kiếm thư mục php của mình và không thể tìm thấy bất kỳ tệp .so nào cả.
Eoin

19
Trong v3.2.2, dòng được đặt trong xampp / apache / conf / Extra / httpd-xampp.conf
Manuel

5
Nó không chỉ là một dòng. Bạn phải chỉnh sửa một phần tốt của httpd-xampp.conf. Vì vậy, tốt hơn là chuyển toàn bộ httpd-xampp.conf mỗi lần bạn phải.
Jeffz

34

Bạn có thể tải xuống và cài đặt hai xampp khác nhau như tôi: (thứ nhất là php7 thứ hai là php5) nhập mô tả hình ảnh ở đây

và nếu bạn không muốn làm điều đó, tôi khuyên bạn nên sử dụng các phiên bản ướt và thay đổi như được hiển thị ở đây .


4
Tại sao bạn sẽ làm điều này? Bạn đang cài đặt lại rất nhiều phần mềm giống nhau, chỉ vì một sự khác biệt nhỏ (phiên bản PHP khác nhau, khi phần còn lại của phần mềm như Apache và MySQL hoàn toàn giống nhau). Tôi đã đăng một giải pháp trong đó bạn chỉ cần sử dụng 1 cài đặt XAMPP và trỏ nó vào phiên bản PHP phù hợp.
Andy

15
Tại sao bạn sẽ làm điều này? bởi vì nó hoạt động và tôi không phiền khi cài đặt nhiều apache và mysql nếu nó tiết kiệm thời gian.
Maulik Gangani

23
không cần quan tâm đến các thực tiễn tốt nhất ở đây, đó là một môi trường địa phương
Ricardo Vigatti

2
Tôi sử dụng aproach này, để quảng cáo, tôi khuyên bạn nên thêm các mục menu bắt đầu cụ thể cho mỗi cài đặt, như: C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ XAMPP56 và C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ XAMPP7 chẳng hạn
Ricardo Vigatti

2
Nếu đây không phải là một giải pháp tốt tại sao bạn không đăng một giải pháp chính xác? Trên thực tế rất khó cài đặt 2 phiên bản trên cùng một xampp và tất cả các giải pháp ở đây đều sai ...
Federico Schiocchet

12

Tôi khuyên bạn nên sử dụng Docker, điều này cho phép bạn chia môi trường thành nhiều thành phần khác nhau và trộn và kết hợp các thành phần bạn muốn bất cứ lúc nào.

Docker sẽ cho phép bạn chạy một container với MySQL, một container khác với PHP. Vì chúng là những hình ảnh riêng biệt mà bạn có thể có hai container, một PHP 5 PHP 7 khác, bạn khởi động cái nào bạn muốn và cổng 80 có thể được ánh xạ tới cả hai container.

https://hub.docker.com có một loạt các hình ảnh được cấu hình sẵn mà bạn có thể cài đặt và chạy mà không gặp nhiều rắc rối.

Tôi cũng đã thêm portainer dưới dạng hình ảnh, cho phép bạn quản lý các khía cạnh khác nhau của thiết lập docker của bạn - từ bên trong hình ảnh docker (Tôi đã khởi động container này khi khởi động để tiết kiệm cho tôi khi phải sử dụng dòng lệnh). Nó không làm mọi thứ cho bạn và đôi khi việc định cấu hình và khởi chạy hình ảnh lần đầu tiên từ dòng lệnh dễ dàng hơn, nhưng sau khi thiết lập, bạn có thể bắt đầu và dừng chúng thông qua giao diện web.

Cũng có thể chạy cả hai container cùng một lúc và ánh xạ các cổng riêng biệt tới từng container. Vì vậy, cổng 80 có thể được ánh xạ tới PHP 5 và 81 sang PHP 81 (Hoặc PHP 7 nếu bạn xem cái này vào năm 2017).

Có nhiều hướng dẫn khác nhau về cách cài đặt Docker ( https://docs.docker.com/engine/installation/ ) và vô số cách 'nhập' khác. Hãy thử http://www.masterzendframework.com/docker-development-en môi / để biết cấu hình môi trường phát triển.


Tôi thứ hai này. Làm cho công ty của bạn một lợi ích và có được Docker chạy. Chuyển đổi các phiên bản PHP, các nhà phát triển mới trên tàu nhanh hơn, giúp triển khai dễ dàng hơn và không có bất ngờ trong sản xuất.
Kris lột

và 81 đến PHP 81. bạn có nghĩa là PHP 7? Tôi nghĩ rằng chúng ta đã thoát khỏi PHP 81 chưa :)
Andy

2
Errrr ... Tôi thực sự có nghĩa là 81 (Tôi đảm bảo câu trả lời của tôi là bằng chứng trong tương lai: - /)
Nigel Ren

1
@NigelRen Tôi đã không bình chọn nó nhưng sẽ đoán rằng đó là vì bạn đang đề xuất sử dụng một giải pháp hoàn toàn khác (Docker) thay vì giải quyết làm thế nào có thể trong XAMPP - điều đó chắc chắn là như vậy. Câu trả lời của bạn là một giải pháp thay thế (rất tốt) cho vấn đề, nhưng không phải là câu trả lời cho câu hỏi đã được hỏi.
Andy

7

Tôi sử dụng Uniserver.

Nó có tính năng này được xây dựng trong.

http://www.uniformserver.com/

Nó đơn giản mà.

Máy chủ thống nhất là một giải pháp máy chủ WAMP nhẹ miễn phí cho Windows. Dưới 24 MB, thiết kế mô-đun, bao gồm các phiên bản mới nhất của Apache2, Perl5, PHP (chuyển đổi giữa PHP53, PHP54, PHP55 hoặc PHP56), MySQL5 hoặc MariaDB5, phpMyAdmin hoặc Adminer4. Không cần cài đặt! Không có bụi đăng ký! Chỉ cần giải nén và bắn lên!

Nó thậm chí còn chạy ra một ổ đĩa flash. Có trình giả lập cron, hỗ trợ perl, mariaDB, một vài phiên bản Mysql, máy chủ filezilla và một vài thứ khác.

nhập mô tả hình ảnh ở đây


Đây là giải pháp tốt nhất tôi nghĩ. Tôi đã cứu mạng tôi.
skpaul

Tôi đang nhận được một cảnh báo virus. Win32 / Uwamson.A! Ml
Norman Huth

6

Bạn có thể có hai phiên bản XAMPP khác nhau.

  • Tải xuống các tệp đó từ https://www.apachefriends.org/doad.html và cài đặt vào một thư mục bạn chọn, ví dụ như trong C: \ 5.6.31 \ xampp và C: \ 7.1.18 \ xampp.
  • Sau mỗi lần cài đặt, hãy chuyển đến thư mục đã cài đặt (ví dụ: C: \ 5.6.31 \ xampp, C: \ 7.1.18 \ xampp) và bắt đầu "setup_xampp.bat" và bạn sẽ thấy một cái gì đó như thế này.
  • Bạn có thể tạo các phím tắt "xampp-control.exe" trên máy tính để bàn của bạn (nhấp chuột phải vào "xampp-control.exe" Gửi đến -> Máy tính để bàn) và đổi tên các phím tắt cho ex. "xampp 5.6.31" và "xampp 7.1.8".
  • Bắt đầu bảng điều khiển XAMPP bằng cách nhấp đúp vào "xampp-control.exe" hoặc lối tắt được tạo trước đó và khởi động máy chủ Apache và MySQL.
  • Để kiểm tra cài đặt, hãy mở trình duyệt của bạn và nhập 127.0.0.1 hoặc localhost vào thanh vị trí. Bạn sẽ thấy màn hình bắt đầu XAMPP.
  • Không mở thêm một bảng điều khiển XAMPP.
  • XAMPP gỡ cài đặt? Chỉ cần xóa Thư mục "xampp". Nhưng trước khi tắt máy apache và mysql.
  • Đó là tất cả. Bạn có thể sử dụng các phiên bản php khác nhau mở bảng điều khiển XAMPP tương ứng.

Nếu nó thực sự có thể làm điều đó với 1 cài đặt tại sao bạn không đăng một giải pháp? Trên thực tế rất khó cài đặt 2 phiên bản và tất cả các giải pháp ở đây đều sai ...
Federico Schiocchet

@Andy Nếu DB không quá lớn, cài đặt kép là một lựa chọn khả thi. Nhưng câu trả lời của bạn có upvote của tôi.
Jeffz

6

Tôi đang làm việc trên một dự án mười năm tại nơi làm việc. Vì vậy, 5.6 là mặc định của tôi. Ngoài ra còn có các dự án nhỏ cũ hơn chỉ hoạt động với 5.2 và tôi cũng muốn làm việc trên các phiên bản mới cho các dự án cá nhân của mình với 7.3.8

Dưới đây là những gì tôi đã làm để thêm 5.2 và 7.3.8 trên phiên bản 5.6 mặc định.

1 - Đã tải xuống phiên bản php TS;

2 - Trích xuất vào thư mục c: \ xampp \ php738 và c: \ xampp \ php52 theo thứ tự

3 - Đã thêm các dòng này vào cuối httpd-xampp.conf (hoặc httpd.conf);

*** THÔNG BÁO QUAN TRỌNG: Bạn KHÔNG nên sử dụng tên bí danh tập lệnh làm tên thư mục đích của mình, chúng phải khác nhau. (ví dụ / php7x vẫn ổn, / php7 thì không)

PHP 7.3.8 cho thư mục D: \ www \ php7

ScriptAlias /php7x "C:/xampp/php738"
Action application/x-httpd-php7-cgi /php7x/php-cgi.exe
<Directory "C:/xampp/php738">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

<Directory "D:\www\php7">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php7-cgi
    </FilesMatch>
</Directory>

PHP 5.2 cho thư mục D: \ www \ php52

ScriptAlias /phpold "C:/xampp/php52"
Action application/x-httpd-phpold-cgi /phpold/php-cgi.exe
<Directory "C:/xampp/php52">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

<Directory "D:\www\php52">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-phpold-cgi
    </FilesMatch>
</Directory>

Một số lưu ý hữu ích:

  • Nếu bạn gặp rắc rối với php5.x trong khi sử dụng trình soạn thảo chuyển thiết bị đầu cuối sang 7.3.8
  • Nếu bạn muốn tạo php 7.3.8, trình thông dịch php dòng lệnh mặc định của bạn trên windows chỉ cần thay đổi đường dẫn môi trường windows của bạn cho php thành đường dẫn thư mục 7.3.8.
  • Đừng quên chỉnh sửa conf conf php.ini khi bạn cần trong mỗi thư mục phiên bản.

Và như một lưu ý thưởng cuối cùng, nếu bạn cần đặt máy chủ ảo với bất kỳ phiên bản nào bạn có thể sử dụng phương pháp tương tự. Một mẫu máy chủ vavel conf cho php 7.3.8;

<VirtualHost *:80>
ServerAdmin admin@laravel.local
DocumentRoot "D:\www\vhosts\laravel.local\public"
ServerName  laravel.local
<FilesMatch "\.php$">
 SetHandler application/x-httpd-php7-cgi # escape for default php version
#SetHandler application/x-httpd-phpold-cgi # unescape for php 5.2
</FilesMatch>

ErrorLog "logs/laravel.local.log"
CustomLog "logs/laravel.local.log" combined

Cảm ơn @Munim Munna đã trả lời chi tiết, tôi muốn chia sẻ một mẫu vững chắc với thông báo quan trọng ở trên.


5

Trừ khi nó phải là XAMPP tuyệt đối và chắc chắn, bạn có thể thử lấy những gì bạn muốn với WAMP. WAMP là khá nhiều điều tương tự trong gói khác nhau.

Khi bạn đã cài đặt xong, bạn có thể chuyển đổi giữa các phiên bản php tại đây:

nhập mô tả hình ảnh ở đây

Bạn có thể cài đặt bao nhiêu phiên bản PHP mà bạn cần.

Đây là cách nó được thực hiện chi tiết.

Chỉ cần truy cập vào đây: WAMP tải xuống

Sau đó chọn máy chủ cơ sở của bạn, ví dụ mới nhất với php7.

Sau đó, khi WAMP 3 được cài đặt, hãy chuyển đến thư mục: addons và chọn phiên bản php (hoặc phiên bản) mà bạn đang theo dõi. Họ cung cấp các hương vị php bắt đầu từ php 5.3.29, hoạt động với mysql_connect.

Để cài đặt addon, trong khi cài đặt (nhấp đúp vào tệp exe) chỉ cần trỏ đến thư mục bạn đã cài đặt WAMP 3.

Sau đó, bạn có thể sử dụng nội dung của các thư mục khác, như: ứng dụng, v.v. để thêm chức năng

Mọi thứ đều giao thoa, vì vậy bạn có thể tập trung vào mã hóa và không hack môi trường của mình.


4

Có bạn có thể. Tôi giả sử bạn đã cài đặt xampp. Vì thế,

  • Đóng tất cả các trường hợp xampp. Sử dụng trình quản lý tác vụ dừng apache và mysqld.
  • Sau đó đổi tên xampp thành xampp1 hoặc một cái gì đó sau tên xampp.
  • Bây giờ Tải xuống phiên bản xampp khác. Chỉ tạo một tên thư mục xampp. Cài đặt xampp đã tải xuống ở đó.
  • Bây giờ tùy thuộc vào phiên bản xampp của yêu cầu của bạn, chỉ cần đổi tên thư mục đích thành xampp và thư mục khác thành tên khác.

Đó là cách tôi đang làm việc với nhiều xampp được cài đặt


4
Không chắc chắn tại sao điều này bị downvotet vì câu trả lời này không hoạt động và chính xác là những gì câu hỏi đang hỏi về. Nói chung, giảm âm thầm mà không đề xuất cải tiến không phải là một điều thông minh nói chung.
Fabian Schöner

@ FabianSchöner Cảm ơn. Tôi không biết tại sao tôi lại bị hạ thấp về câu trả lời này.
Shuvro

1
Lý do nó bị hạ thấp là vì ai đó đã đăng chính xác câu trả lời này. Và thứ hai, đó là một cách hoàn toàn không cần thiết khi bạn cài đặt lại TẤT CẢ cùng một phần mềm chỉ để có một sự khác biệt nhỏ. Điều đó là có thể - như đã nêu trong câu trả lời tôi đã đăng - để sử dụng 1 cài đặt XAMPP và sau đó định cấu hình nó để sử dụng các phiên bản PHP khác nhau.
Andy

3

Có thể có nhiều phiên bản PHP được thiết lập với một bản cài đặt XAMPP. Các hướng dẫn bên dưới đang hoạt động cho Windows.

  1. Cài đặt phiên bản XAMPP mới nhất cho Windows (trong trường hợp của tôi là với PHP 7.1)
  2. Đảm bảo rằng Apache không chạy từ Bảng điều khiển XAMPP
  3. Đổi tên thư mục php trong thư mục cài đặt XAMPP, chẳng hạn như C:\xampp\phptrở thành C:\xampp\php-7.1.11.
  4. Tải xuống phiên bản PHP bạn muốn chạy ngoài ra (Ví dụ: PHP 5.4.45 )
  5. Di chuyển thư mục php từ phiên bản bạn đã tải xuống thư mục cài đặt XAMPP. Đổi tên nó để nó bao gồm phiên bản PHP. Chẳng hạn như C:\xampp\php-5.4.45.

Bây giờ bạn cần chỉnh sửa cấu hình XAMPP và Apache:

  1. Trong C:\xampp\apache\conf\httpd.conf, xác định vị trí cài đặt XAMPP cho PHP, bạn nên thay đổi nó thành một cái gì đó như:

Nơi bạn phải bình luận (với #) các phiên bản PHP khác để chỉ có một phiên bản Includesẽ được diễn giải vào thời điểm đó.

#XAMPP settings PHP 7
Include "conf/extra/httpd-xampp.conf.7.1"

#XAMPP settings PHP 5.4.45
#Include "conf/extra/httpd-xampp.conf.5.4.45"
  1. Bây giờ trong C:\xampp\apache\conf\extrathư mục đổi tên httpd-xampp.confthành httpd-xampp.conf.7.1và thêm một tệp cấu hình mới cho httpd-xampp.conf.5.4.45. Trong trường hợp của tôi, tôi đã sao chép tệp conf của một bản cài đặt XAMPP khác cho php 5.5 vì cú pháp có thể hơi khác nhau cho mỗi phiên bản.

  2. Chỉnh sửa httpd-xampp.conf.5.4.45httpd-xampp.conf.7.1thay thế tất cả các tham chiếu đến phpthư mục với php-X.Xphiên bản mới . Có ít nhất 10 thay đổi được thực hiện ở đây cho mỗi tệp.

  3. Bây giờ bạn cần chỉnh sửa php.ini cho hai phiên bản. Ví dụ cho php 7.1, chỉnh sửa C:\xampp\php-7.1.11\php.ini, nơi bạn sẽ thay thế các đường dẫn của thư mục php cho include_path, browscap, error_log, extension_dir..

Và đó là nó. Bây giờ bạn có thể khởi động Apache từ Bảng điều khiển XAMPP. Và để chuyển từ phiên bản này sang phiên bản khác, bạn chỉ cần chỉnh sửa C:\xampp\apache\conf\httpd.confvà thay đổi phiên bản PHP đi kèm trước khi khởi động lại Apache.


3

chạy cái này trong các cửa sổ Command Prompt (cmd.exe).

set PATH=C:\xampp\php;%PATH%

thay đổi nó tùy thuộc vào nơi bạn đặt cài đặt php 7.


2

Bạn không cần lãng phí thời gian với cấu hình này, chỉ cần sử dụng MAMP :)

MAMP có tính năng lựa chọn phiên bản PHP trên giao diện.


2

Đây có lẽ là câu trả lời ít kỹ thuật nhất cho câu hỏi, nhưng nó cũng dễ thực hiện nhất.

Nếu bạn có hai ổ đĩa như C:D: bạn có thể cài đặt một phiên bản XAMPP riêng trên cả hai ổ đĩa với các phiên bản php khác nhau. Điều này khiến tôi mất ít hơn 10 phút để làm và ít bị lỗi nhất.

Tôi chỉ tạo hai phím tắt trên màn hình cho cả xampp-control.exe và đặt tên cho các phím tắt theo phiên bản php của chúng. Tôi hy vọng điều này sẽ giúp những người như tôi thích một giải pháp rất nhanh và bẩn.


1

Thực hiện theo các bước đơn giản này . Tôi hiện đang chạy XAMPP trên PHP 7.2 nhưng cần PHP 5.6 để hoạt động trên các dự án cũ

BƯỚC 1

Tải xuống chủ đề Phiên bản PHP an toàn trên https://windows.php.net/doad

Đặt tệp vào [Ổ đĩa]: \ xampp \ php5.6

  • Đổi tên thư mục tùy thuộc vào phiên bản Php

BƯỚC 2

Sao chép [Ổ đĩa]: \ xampp \ apache \ conf \ Extra \ httpd-xampp.conf

Đổi tên nó thành [Drive]: \ xampp \ apache \ conf \ Extra \ httpd-xampp5.6.confRename tên tệp tùy theo phiên bản Php

BƯỚC 3

Chỉnh sửa 'httpd-xampp5.6.conf' mới được tạo

về cơ bản, bạn cần thay đổi tất cả các nguồn PHP và.

Trước

LoadFile "C:/xampp/php/php7ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"

Sau

LoadFile "C:/xampp/php5.6/php5ts.dll"
LoadFile "C:/xampp/php5.6/libpq.dll"
LoadModule php5_module "C:/xampp/php5.6/php5apache2_4.dll"

Đây là tập tin của tôi: https://gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec

BƯỚC 4

Chỉnh sửa tệp [Drive]: \ xampp \ apache \ conf \ httpd.conf

Trước

# XAMPP settings
Include "conf/extra/httpd-xampp.conf"

Sau

# XAMPP settings
Include "conf/extra/httpd-xampp5.6.conf"
  • Bạn chỉ có thể chỉnh sửa dòng này khi chuyển sang phiên bản khác

BƯỚC 5

Chỉnh sửa cấu hình PHP 5.6 của bạn - php.ini

Thêm thư mục tiện ích mở rộng của bạn: extension_dir = "C: \ xampp \ php5.6 \ ext"

BƯỚC 6

Bắt đầu Apache

BƯỚC 7

Chỉnh sửa đường dẫn biến môi trường PHP trên Windows


0

Có thể hơi muộn, nhưng tôi đang sử dụng một lô để đổi tên các thư mục PHP (một phiên bản sửa đổi một chút của phpswitch mà tôi tìm thấy cách đây nhiều năm).

Bạn sao chép các thư mục khác nhau vào bản cài đặt XAMPP của bạn. Mỗi thư mục PHP (ngoại trừ thư mục hoạt động) nhận số phiên bản dưới dạng hậu tố (ví dụ: php_5.6.32 ). Trong TẤT CẢ các thư mục PHP, một tệp (PHP_VERSION) được tạo, chỉ chứa số phiên bản tương ứng, do đó Script có thể lấy thông tin này. Nhưng đó là tất cả được mô tả trong README.

Vì PHP7, httpd-xampp.conf tải php7ts.dll thay vì php5ts.dll . Vì vậy, tôi đã phải mở rộng tập lệnh (PHPSwitch.php) để đổi tên các tệp cấu hình này bằng cách làm theo cùng một cách tiếp cận.

    $renameCur = new PHPSwitch_Rename($currInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName'] . '_' . $currInst['version']);
    $renameNew = new PHPSwitch_Rename($newInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName']);

    $apache_curent      = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";
    $apache_curent_rename   = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$currInst['version'].".conf";
    $apache_new             = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$newInst['version'].".conf";
    $apache_new_rename      = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";

    $renameCur_apache_conf = new PHPSwitch_Rename($apache_curent, $apache_curent_rename);
    $renameNew_apache_conf = new PHPSwitch_Rename($apache_new, $apache_new_rename);

    $transaction = new PHPSwitch_Rename_Transaction();
    $transaction->add($renameCur);
    $transaction->add($renameNew);
    $transaction->add($renameCur_apache_conf);
    $transaction->add($renameNew_apache_conf);

0

Tôi cần phải làm điều tương tự, vì vậy tôi đã tìm hiểu cách thức và sắp xếp để tràn, trong đó OP có cùng một vấn đề ... Vì vậy, phát hiện của tôi .. Tôi đã thử đổi tên các tệp từ tất cả các hướng khác nhau và kết luận của tôi về cơ bản là nó đang đưa tôi quá lâu. SOOOO Tôi đã kết thúc việc cài đặt phiên bản 7 từ đây:

https://www.apachefriends.org/index.html (hủy dịch vụ và thoát khỏi xampp trước khi thử)

Khi được hỏi nơi để đặt tên thư mục như vậy (đặt tên khác):

nhập mô tả hình ảnh ở đây

DONGZO! Bây giờ chỉ cần đảm bảo tiêu diệt các dịch vụ và thoát ra trước khi hoán đổi qua lại và bạn có 2 envs XAMPP vô trùng để chơi trong ..

Hoan hô! bây giờ tôi thực sự có thể đi làm


Tôi nghĩ rằng nó đã được đề xuất bởi 2 câu trả lời ở trên, Maulik Gangani và og1842.
Munim Munna


0

Tôi biết đây là bài viết cũ nhưng tôi muốn chia sẻ có thư viện để vẫn chạy mysql_connect () trong PHP 7. Nó hoạt động bằng cách ghi đè hàm thực (mysql_connect () bị ghi đè bởi mysqli_connect () hoạt động trên thư viện này).

Tôi tìm thấy từ video này https://www.youtube.com/watch?v=Eqd-jJu4sQ4

hy vọng nó sẽ giúp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.