2010-08-22 2 views
7

Tôi đã gặp khó khăn để có được trang web CakePHP của tôi hoạt động trên tài khoản "lưu trữ lưới" Godaddy. Ứng dụng bánh của tôi được thiết lập được lưu trữ từ thư mục phụ trên tài khoản và có thể được truy cập thông qua tên miền phụ. Tôi đã phải điều chỉnh các tập tin .htaccess của tôi để làm việc này, và bây giờ tôi cần phải có giao diện điều khiển CakePHP làm việc trong môi trường này.Bàn điều khiển CakePHP trên Godaddy Hosting

Tôi có cùng một thiết lập ứng dụng bánh trên máy chủ Ubuntu được lưu trữ trên dịch vụ EC2 của Amazon. Về cơ bản một đồng bằng ra khỏi hộp thiết lập Ubuntu LAMP. Bảng điều khiển CakePHP hoạt động như mong đợi trong môi trường này.

Khi tôi cố gắng chạy giao diện điều khiển trên Godaddy tôi nhận được thông báo sau:

CakePHP Console: Tập tin này đã được nạp không đúng cách và không thể continue.Please chắc chắn rằng/bánh/console là ở bạn hệ thống con đường, và kiểm tra hướng dẫn cho việc sử dụng đúng đắn về lệnh này . (http://manual.cakephp.org/)

tôi đã bắt đầu để thêm vào một số mã gỡ lỗi trong bánh/console/cake.php để tìm hiểu những gì đang xảy ra . Trên trang web godaddy, khi tôi echo out print_r($this->args) tại dòng 183 tôi tìm thấy mảng là sản phẩm nào. Khi tôi làm điều này trên Ubuntu dụ EC2 của tôi, tôi có được điều này:

Array 
(
    [0] => /var/www/www.directory.sdcweb.org/htdocs/cake/console/cake.php 
) 

Dường như dòng lệnh GoDaddy của PHP không được đi qua các đối số dòng lệnh bash shell. Có ai có một số lời khuyên như thế nào tôi có thể nhận được giao diện điều khiển CakePHP làm việc trên Godaddy?

Các kịch bản bash mà gọi vỏ bánh chứa sau

LIB=${0/%cake/} 
APP=`pwd` 

exec php -q ${LIB}cake.php -working "${APP}" "[email protected]" 

exit; 

Tôi nghĩ rằng sửa đổi kịch bản này có thể giải quyết vấn đề.

+1

đối số dòng lệnh không được chuyển vào ... tôi không chắc nguyên nhân của việc này ... VÀ ở đầu trang web.php có đường dẫn đến/usr/bin/php nhưng vị trí này nằm tại/usr/local/bin/php trên Godaddy. Tôi có thể làm việc xung quanh điều này. – the0ther

+1

tốt, register_argc_argv được đặt thành Tắt, đây có thể là lý do tại sao thông số dòng cmd không được chuyển. – the0ther

Trả lời

1

Tôi không nghĩ rằng việc chỉnh sửa bất kỳ nội dung nào trong lib/cake vẫn ổn, vì nó sẽ bị mất với bản cập nhật bánh đầu tiên của bạn.

Thay vào đó, tôi đã thay đổi các thiết lập register_argc_argv từ php.ini bằng cách thêm dòng:

register_argc_argv=On 

Tất cả dường như làm việc bây giờ với tôi.

+0

Điều này làm việc cho tôi bằng cách sử dụng trình soạn thảo WHM php.ini. Tôi đã cập nhật lên PHP7 và chỉ thị đã được thay đổi bởi bản cập nhật. (Dễ dàng Apache 4). –

1

"Hãy đảm bảo rằng/bánh/bảng điều khiển nằm trong đường dẫn hệ thống của bạn".

Đây là lưu trữ trên lưới nên tôi giả sử bạn có tệp .bashrc mà bạn có thể chỉnh sửa. Trước tiên, bạn cần phải biết đường dẫn tuyệt đối đến bánh tiểu thư mục của bạn sau đó sử dụng vim hoặc nano để chỉnh sửa .bashrc của bạn

PATH = $ PATH:/tuyệt đối/path/to/bánh/console

Sau đó, bạn có thể đăng xuất và đăng nhập lại và bạn sẽ có thể gõ bánh nướng từ bất cứ nơi nào và nó sẽ sửa lỗi của bạn nhận được (chạy nó từ thư mục ứng dụng của bạn để nó có thể tìm thấy database.php của bạn).

Không một tập tin .bashrc bạn có thể xuất các biến tạm thời nhưng bạn sẽ phải gõ nó mỗi khi bạn đăng nhập.

+0

có vẻ như PATH của tôi là chính xác. khi tôi echo PATH trong dòng cmd có vẻ chính xác, và tôi có thể chạy lệnh bánh từ bất kỳ thư mục, luôn luôn nhận được rằng "tập tin này đã được tải không chính xác" tin nhắn. – the0ther

12

trong kịch bản bánh vỏ (bánh/console/bánh) thay đổi

exec php -q ${LIB}cake.php -working "${APP}" "[email protected]" 

để

exec php -q -d register_argc_argv=1 ${LIB}cake.php -working "${APP}" "[email protected]" 

sau này tôi phát hiện ra rằng gọi php như thế này đã xảy ra để chạy PHP 4 CLI.để sửa lỗi này đây là kịch bản bash cuối cùng mà tôi đang sử dụng để gọi PHP 5 trên Godaddy chia sẻ của tôi lưu trữ

exec /web/cgi-bin/php5 -q -d register_argc_argv=1 ${LIB}cake.php -working "${APP}" "[email protected]" 

nếu bạn thiết lập một công việc định kỳ php dựa trên thông qua bảng điều khiển lưu trữ của họ, bạn sẽ tìm thấy lệnh php gọi là thực sự để thực thi php5 này.

+0

Bạn có thể giải thích lý do đằng sau 'register_argc_argv = 1' không? Đó sẽ là tuyệt vời! – mgPePe

+1

đó là một cách để PHP khai báo "tôi sẽ tìm kiếm các tham số dòng lệnh đến". xem: http://php.net/manual/en/ini.core.php#ini.register-argc-argv – the0ther