2011-10-14 23 views
9

Tôi được lưu trữ với 1and1.com và tôi đã thiết lập các tệp của mình được phân tích bằng php5 bằng cách sử dụng .htaccess.Làm thế nào tôi có thể ép buộc Phiên bản PHP cho Dòng lệnh?

Nhưng điều đó chỉ hoạt động trong apache chứ không phải trong dòng lệnh, mặc định là php4 mặc định của máy chủ.

Vì vậy, hiện tại tôi không thể thiết lập các công việc cron cron để chạy mã của tôi dưới dạng php5. Bất kỳ ý tưởng?

Trả lời

9

Nếu cả hai được cài đặt, tất cả những gì bạn cần làm là chạy tập lệnh bằng cách sử dụng nhị phân PHP có liên quan.

Vì vậy, ví dụ:

// Runs using the PHP binary located at /usr/bin/php 
* * * * * root /usr/bin/php -n "/path/to/script.php" 

hoặc

// Runs using the PHP binary located at /var/php5 
* * * * * root /var/php5 -n "/path/to/script.php" 

Tất cả bạn cần biết là đường dẫn hệ thống tập tin đầy đủ của những chương trình PHP CLI, và gọi một liên quan để chạy mã của bạn.

1

phải có hai thư mục PHP và một trong số đó phải là thư mục mặc định. cố gắng tìm ra đường dẫn php5 từ thư mục gốc của máy chủ của bạn và sử dụng đường dẫn đầy đủ tại công việc cron của bạn.

+2

'whereis php' có thể giúp tìm kiếm các địa chỉ php của bạn – Zombaya

+0

'php' hoặc' php5.5-cli' nào như dòng lệnh 1and1 không có 'whereis' – Abinadi

3

Nếu bạn có thể thực hiện PHP script trực tiếp trong vỏ như:

$ script.php 

bạn có thể chỉ định nhị phân sẽ thực thi kịch bản trong đó là dòng đầu tiên:

#!/usr/bin/php 
<?php 

dòng đó được gọi là shebang . Dòng này có thể khác trên hệ thống của bạn, bạn cần phải biết đường dẫn hệ thống tệp đầy đủ của nhị phân PHP CLI mà bạn muốn sử dụng cho tập lệnh đó.

Nếu bạn thực thi tệp đó trong trình bao, nhị phân được chỉ định sẽ được sử dụng. Tương tự cho cron.

Nếu bạn thực thi tệp đó qua máy chủ web của mình, PHP sẽ tự động bỏ dòng đó.

Xem cũng như:Features: Using PHP from the command line

0

Cuối cùng tôi đã làm việc này. Vấn đề là một vài lần.

Đầu tiên, PHP đang được sử dụng nằm trong/etc/bin thay vì phiên bản MAMP. Tôi đã có thể thay đổi điều này và sử dụng phiên bản MAMP thay thế.

Thứ hai, để sử dụng php thông qua CLI, bạn phải đảm bảo sử dụng đường dẫn ĐẦY ĐỦ cho php và không chỉ bản thân php. I E. sử dụng /MAMP/bin/php/php5.3.x/php trong lệnh gọi exec() của bạn. Điều này hiện đang làm việc cho tôi.

Bạn có thể kiểm tra GIST của tôi ở đây ... https: //gist.github.com/1861487

+0

Bạn không cần sử dụng đường dẫn đầy đủ cho php để chạy trong CLI (có chạy php từ thiết bị đầu cuối trên máy Mac của tôi bằng cách sử dụng MAMP, XAMPP, và cài đặt chứng khoán của OSX, tôi là su lý do bạn đã làm là một trong hai (tùy thuộc vào lỗi bạn nhận được): a) Bạn không có thư mục bin trong biến env PATH của bạn (mà được tôi mỗi lần), hoặc b) bạn có nhiều phiên bản của php được cài đặt và cái đầu tiên trong đường dẫn không phải là thứ bạn muốn. Đối với trước đây, bạn có thể xác nhận bằng cách chạy phần sau trước cuộc gọi php: 'PATH = $ PATH:/MAMP/bin' – Anthony

+0

Điều này không trả lời được câu hỏi nào cả. OP đã hỏi về môi trường của 1and1, không liên quan gì tới MAMP. – Abinadi

1

Đây là một cách tiếp cận để buộc PHP từ dòng lệnh trên 1and1.

Đăng nhập với ssh trên máy chủ của bạn và tạo một file mới có tên gọi .profile trong đó bạn sẽ viết những dòng sau alias php='/usr/local/bin/php5' Truy nhập vào lại với ssh và kiểm tra phiên bản php với php -v bạn sẽ thấy phiên bản tại là 5.

10

theo để https://community.1and1.com/using-php-composer-at-1and1/, tạo .profile trong projet gốc của bạn và thêm dòng:

alias php='/usr/bin/php5.5-cli' 

Nó làm việc cho tôi. Đăng nhập SSH và làm:

php -v 

Kết quả:

PHP 5.5.32 (cli) (được xây dựng: Feb 15 2016 16:13:44)

+0

Điều này! Công việc tốt, dicotout. Bạn nhận được một ngôi sao vàng trong ngày. – Abinadi

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