2013-04-04 47 views
11

Trang web Symfony 2 của tôi gần đây đã gây ra vấn đề cho tôi khi tôi cố xóa bộ nhớ cache. tôi gõ lệnh sau trong terminal:Vấn đề xóa bộ nhớ cache của Symfony 2

php app/console cache:clear --env=dev 

Và nhận được lỗi sau:

[ErrorException]                                                         
Warning: rename(/var/www/corpsite/corpsite/app/cache/dev,/var/www/corpsite/corpsite/app/cache/dev_old): Directory not empty in /var/www/corpsite/corpsite/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php line 74 

Vì vậy, tôi thay đổi các điều khoản trong hồ sơ đó để 777, và chạy lại lệnh bộ nhớ cache rõ ràng, cung cấp cho tôi lỗi này:

[ErrorException]                                                       
    Warning: unlink(/var/www/corpsite/corpsite/app/cache/dev_old/twig/6b/e9/4491e41b895786689b86f32f446f.php): Permission denied in /var/www/corpsite/corpsite/vendor/symfony/src/Symfony/Component/HttpKernel/Util/Filesystem.php line 100 

Tôi có thể giải quyết vấn đề bằng cách xóa thư mục 'dev_old' nhưng tôi muốn giải quyết vấn đề đang gây ra sự cố.

P.S - Tôi biết trang web đang chạy ở chế độ nhà phát triển. Trang web đã hoạt động được 10 tháng và điều này chưa bao giờ là vấn đề trước đây.

Mọi trợ giúp đều được đánh giá cao!

+0

Chỉ cần xóa thư mục dev_old và chạy lệnh lần nữa. – Squazic

+0

"Tôi có thể giải quyết vấn đề bằng cách xóa thư mục 'dev_old', nhưng tôi muốn giải quyết vấn đề đang gây ra sự cố." – qooplmao

+0

Và chạy lệnh bằng 'root'? (hoặc một 'sudo') – cheesemacfly

Trả lời

31

Bạn cần có quyền truy cập của mình trên cả bộ nhớ cache & nhật ký thư mục. Để làm điều đó, bạn có thể làm theo các chỉ dẫn đưa ra ở đây: http://symfony.com/doc/current/book/installation.html#configuration-and-setup

Có rất nhiều cách khác nhau, tùy thuộc vào hệ điều hành của bạn (thay www-dữ liệu với người dùng apache của bạn):

Nếu nó hỗ trợ chmod + a:

$ rm -rf app/cache/* 
$ rm -rf app/logs/* 

$ sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs 
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs 

khác, nếu nó hỗ trợ setfacl (xem https://help.ubuntu.com/community/FilePermissionsACLs):

$ sudo setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX app/cache app/logs 
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs 

khác, đặt những dòng trong đầu ứng dụng/console, web/app.php & web/app_dev.php (không khuyến khích):

umask(0002); // This will let the permissions be 0775 

// or 

umask(0000); // This will let the permissions be 0777 
+1

Cảm ơn vì điều này. Tôi đã sử dụng bộ lệnh thứ hai (setfacl) sau khi xóa thư mục app/cache/dev_old và nó đã hoạt động. – richelliot

+0

@ hugo-briand, vui lòng mở rộng lý do tại sao không đề xuất umask (0002)? Vấn đề an ninh? –

+0

Từ các chỉ dẫn được đưa ra trong quá trình cài đặt symfony, phương pháp này không an toàn. Điều này có nghĩa là nếu bạn có quyền truy cập song song vào tập lệnh của mình (thông qua fpm chẳng hạn hoặc truy vấn + CLI), bạn có thể gặp sự cố. Từ PHP umask doc (http://php.net/manual/en/function.umask.php): Tránh sử dụng chức năng này trong máy chủ web đa luồng. Nó là tốt hơn để thay đổi quyền truy cập tập tin với chmod() sau khi tạo tập tin. Việc sử dụng umask() có thể dẫn đến hành vi không mong muốn của các tập lệnh chạy đồng thời và chính máy chủ web vì tất cả chúng đều sử dụng cùng một umask. –

-4

Bạn cần phải nhận được quyền truy cập của bạn trên cả bộ nhớ cache & bản ghi thư mục. Để làm điều đó, bạn có thể làm theo các chỉ dẫn đưa ra ở đây:

+1

Cho ở đâu?:) Trước khi bạn đăng liên kết đó: sẽ tốt hơn nếu bạn đăng liên kết * và * có nội dung liên quan trong câu trả lời, vì các liên kết có thể trở nên không hợp lệ. –

2

trong Symfony3 thư mục với bộ nhớ cache chuyển app-var, do đó lệnh sẽ là:

$ rm -rf var/cache/* 
$ rm -rf var/logs/* 
$ sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs 
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs 
+0

Tôi đã ngừng sử dụng Symfony 2 năm trước và không bỏ lỡ nó một chút. Nó làm cho những điều dễ dàng khó khăn và những điều khó khăn dễ dàng. Mọi dự án đều đau đầu. Symfony3 như thế nào? – richelliot

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