2011-09-28 27 views
17

Tôi đang sử dụng CakePHP 2.0 RC-1. Sau khi kiểm tra dự án từ SVN, ứng dụng đang bắt đầu phàn nàn rằng nó không thể ghi các tệp bộ nhớ cache vào thư mục tmp/cache. Vì đây là địa phương, tôi biết thư mục có khả năng ghi và tôi có thể R CLE RÀNG thấy rằng các thư mục thậm chí còn chứa đầy các tệp, do đó, lỗi này hơi lạ.CakePHP 2.0 - Bánh không thể ghi vào bộ nhớ cache Tệp

Dưới đây là một số lỗi tôi đã gặp phải:

_cake_core_ cache was unable to write 'cake_dev_nb' to File cache 

fopen(c:\cake\app\tmp\cache\models\cake_model_default_media) [function.fopen]: failed to open stream: No error [CORE\Cake\Cache\Engine\FileEngine.php, line 127] 

Không có lỗi ?! Wth?

Bây giờ, nếu tôi tìm trong các tập tin FileEngine, tại dòng 127 nó đọc:

if (!$handle = fopen($this->_File->getPathName(), 'c')) { 
      return false; 
} 

Bằng cách thay thế "c" với "w", không có lỗi gặp phải và mọi thứ hoạt động như mong muốn. Tuy nhiên, không cần thiết phải sửa đổi các thư viện Cake cốt lõi để giải quyết vấn đề này. Hãy để tôi lặp lại điều đó trên máy tính khác của tôi, nó hoạt động như dự định, mà không cần chỉnh sửa thư viện lõi. Cả hai đều sử dụng hệ điều hành Windows và quyền đọc/ghi vào thư mục tmp/cache-folder giống hệt nhau.

Edit: Đây là một trang web có kinh nghiệm các kết quả đầu ra lỗi Tôi đang gặp tại địa phương

Ví dụ trang web được tìm thấy bởi Googling. Không phải trang web của tôi: http://www.12h30.net/credit/

Bất kỳ đề xuất nào?

Cập nhật: Đây là lý do: Điều này được gây ra nếu bạn có phiên bản PHP quá thấp, trước 5.2.6, như được nêu trong "api55" trong nhận xét. Cảm ơn vi đa trả lơi. Hy vọng điều này sẽ giúp bạn quá.

+2

bạn có phiên bản php nào? hãy nhớ rằng 2.0 vẫn còn trong giai đoạn RC, do đó, nó có thể có loại lỗi ... cho chế độ c hoặc c + bạn CẦN phải có php 5.2.6 hoặc mới hơn nếu bạn không nó sẽ không nhận ra rằng chế độ – api55

Trả lời

1

Chỉ cần cho quyền CHMOD (776 hoạt động tốt đối với tôi) để app/tmp

23

Vâng, trong trường hợp của tôi, khi tôi kiểm tra ứng dụng của tôi, nó không có thư mục /tmp. Sau đó, tôi đã tạo cấu trúc (/tmp/cache/models, /tmp/cache/persistent) và tất cả đều hoạt động tốt. Điều này xảy ra với tôi có thể git bỏ qua các thư mục trống, vì vậy chúng không được tạo ra.

+1

Thật vậy, phiên bản hệ thống điều khiển thường bỏ qua các thư mục trống. – Alfabravo

+0

Đây là câu trả lời đúng, làm việc cho tôi. –

17

Tôi gặp vấn đề tương tự, đó là vì tôi đã chown -R www vào thư mục app/tmp để lấy Bánh chạy "đúng" mà không cho mọi người viết đặc quyền. Có vẻ như trong quá trình phát triển, cách duy nhất để sử dụng bảng điều khiển và web là để cho mọi người viết đặc quyền hoặc tự thêm mình vào nhóm www.

Giải pháp dễ dàng:

chmod -R 777 ứng dụng/tmp

hoặc

chown -R Tên truy nhập ứng dụng/tmp

khi sử dụng giao diện điều khiển và

chown -R www ứng dụng/tmp

khi sử dụng web

+0

bạn đã lưu tôi ... –

+9

chmod 777 không bao giờ là câu trả lời cho bất cứ điều gì, điều này là hoàn toàn sai và không an toàn! –

0

cho các cửa sổ người sử dụng với cùng một lỗi/cảnh báo: chắc chắn rằng bạn chạy cửa sổ lệnh trong chế độ nâng;)

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