Phiên bản PHP không được phát hiện chính xác


10

Tôi đang chạy Drush trên một máy chủ có cài đặt nhiều phiên bản PHP. Theo mặc định, php --versionsẽ cung cấp cho bạn 5.2.x, nhưng php53 và php54 cũng có sẵn. Vì vậy, trong .bash_profile của tôi, tôi có alias php='php53'( php --version= 5.3.13), điều này làm cho Drush hoạt động đối với một số lệnh.

Tuy nhiên, tôi vẫn nhận được "Cài đặt PHP dòng lệnh của bạn quá cũ. Drush yêu cầu ít nhất PHP 5.3.2" thông báo cho một số lệnh rất hữu ích.

Một vài trường hợp thực sự khó chịu:

  • drush pm-updatesẽ báo cáo rằng nó đã sao lưu và sau đó cập nhật tất cả các mô-đun và lõi thành công, sau đó trả về lỗi phiên bản PHP và khôi phục tất cả các bản sao lưu. Trong chế độ dài dòng, lệnh xuất hiện trước lỗi là: php /home/[username]/drush/drush.php --backend=2 --verbose --root=/home/[username]/webapps/drup --uri=http://[domain name] pm-updatecode-postupdate 2>&1
  • drush archive-dump sẽ ngay lập tức trả về lỗi phiên bản PHP

Các lệnh khác tôi đã thử cho đến nay hoạt động tốt. Tôi không chắc tại sao điều này lại xảy ra, nếu Drush đôi khi sử dụng nhị phân php53, nhưng lần khác thì không, hoặc nếu nó gặp sự cố khi phát hiện phiên bản chính xác, nhưng một số tính năng rất quan trọng đã bị hỏng đối với tôi.

Câu trả lời:


21

Drush không sử dụng trực tiếp php như một lệnh, nhưng cần đường dẫn đầy đủ. Với phiên bản cuối cùng của Drush, bạn có thể thêm dòng sau vào bạn .bash_profileđể đặt PHP nào bạn muốn sử dụng.

export DRUSH_PHP=/Applications/MAMP/bin/php/php5.3.14/bin/php

Đây chỉ là một ví dụ cho MAMP, nhưng bạn có thể thay đổi nó theo đường dẫn của riêng bạn.


1
Để tinh chỉnh lời giải thích ở trên: khi Drush gọi lại vào chính nó, nó sẽ thực thi 'php' và lấy php đầu tiên trong PATH của bạn. Các bí danh Bash không hiển thị với php exec, vì vậy bí danh php = 'php53' không được nhìn thấy. Các giải thích ở trên khắc phục vấn đề, như sẽ export DRUSH_PHP=php53. Một giải pháp khác là đảm bảo rằng php53 xuất hiện trong PATH của bạn trước bất kỳ PHP nào khác khi chạy Drush.
greg_1_anderson

nếu bạn đang sử dụng oh_my_zsh, hãy chắc chắn

CÁi này đã sửa nó giúp tôi. Mặc dù tôi phải làm source .bash_profileđể có hiệu quả ngay lập tức
Alma

xin lỗi nhưng tôi không thể hiểu tập tin này .bash_profile ở đâu. Tôi có thể tìm ti ở đâu?
Shyghar

1
Nếu bạn đang sử dụng MAMP, cấu hình của biến DRUSH_PHP là không đủ. Xem docs.drush.org/en/7.x/cool
sea26.2

2

Đây là một giải pháp khác:

  1. Tạo một liên kết tượng trưng đến phiên bản mong muốn của php (php5.4 trong trường hợp của tôi) ln -s / usr / local / bin / php54 ~ / bin / php

  2. chúng ta cần thay đổi mức độ ưu tiên của ~ / bin trong $ PATH để nó xuất hiện trước / usr / local / bin (nơi trình thông dịch php gốc nằm) find ~ / -name .bash_profile | xargs sed -i 's / \ $ PATH: \ $ HOME / bin / \ $ HOME / bin: \ $ PATH / g'

  3. tải lại .bash_profile nguồn ~ / .bash_profile

có nguồn gốc từ: http://webiga.com/2013/06/22/change-default-version-of-php-at-webfaction/


0

Tôi vừa gặp phải điều này sau khi nâng cấp Drush trên Windows. Máy chủ có phiên bản PHP cũ hơn đang chạy và nó không chọn phiên bản PHP đi kèm với Drush.

Tôi đã có thể sửa nó bằng cách chỉ định đường dẫn đến php.exe trong tệp drush.bat, nằm ở

c: \ tài liệu và cài đặt \ tất cả người dùng \ dữ liệu ứng dụng \ drush \ drush.bat

Tôi vừa thêm đường dẫn đầy đủ vào PHP bằng cách thay đổi dòng này:

@ php.exe "% ~ dp0drush.php" --php = "php.exe"% * để:

@ "c: \ tệp chương trình \ drush \ php \ php.exe" "% ~ dp0drush.php" --php = "php.exe"% *


0

Vấn đề đối với tôi là drush không hoạt động với phiên bản PHP chính xác, tôi nghĩ vấn đề là nó sử dụng PHP 7 và tôi cần PHP 5.6. Vì vậy, tôi chạy trong giao diện điều khiển:

php ở đâu

Và kết quả là (xem đường dẫn PHP cho 5.6): nhập mô tả hình ảnh ở đây

Sau đó, tôi đã đi đến tệp ~ / .bashrc của mình và thêm một dòng đặt đường dẫn PHP cho drush (và lưu):

xuất DRUSH_PHP = / usr / bin / php5.6

Sau đó, tôi đã cập nhật .bashrc bằng cách sau (đừng bỏ lỡ điểm khi bắt đầu lệnh):

. ~ / .bashrc

Và đó là nó! Mong rằng sẽ giúp!


0

Giả sử bạn đã cài đặt drush với trình soạn thảo và bạn muốn chạy lệnh của mình bằng cách sử dụng php 7 (điều này cũng hoạt động với enia đám mây envs)

/usr/local/php7.1/bin/php ../vendor/drush/drush/drush.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.