2016-06-08 16 views
5

mặc dù con đường /mnt/my-proj/app/../var/sessions/dev có thể truy cập cho cả người dùng bình thường và www -data Tôi nhận được thông báo sau:PHP7 + Symfony 3.1.0 + Vagrant: Không thể ghi dữ liệu phiên

Warning: session_write_close(): Failed to write session data (user). Please verify that the current setting of session.save_path is correct (/mnt/op-accounting2/app/../var/sessions/dev) 

Tôi nhận được thông báo ở trên chỉ trong dev, nhưng không phải trong sản phẩm. /mnt/my-proj/app/../var/sessions/dev/mnt/my-proj/app/../var/sessions/prod có pemissions giống nhau: 777 .

Con đường trên được gắn kết như sau:

# mount -t vboxsf -o uid=1000,gid=33,umask=000 my-proj /mnt/my-proj; 

tôi đang làm gì sai?

Tôi đã đọc các bài viết sau đây, nhưng không thể tìm ra giải pháp cho tôi:

PHP session handling errors

https://github.com/NewEraCracker/suhosin-patches/issues/3

PHP7 + Symfony 2.8, Failed to write session data

Tôi đang sử dụng Vagrant 1.8.1 trên Windows 8.1 Enterprice (64Bit) và ubuntu-xenial 16.04 trong Vagrant. Nhà cung cấp là VirtualBox 5.0.20. Cài đặt chủ yếu là cài đặt mặc định. Đường dẫn ở trên được chia sẻ bằng VirtualBox GUI với quyền truy cập đầy đủ.

Trân trọng!

Juri

Trả lời

3

SOLVED! :-)

Thiết

save_path: "/var/lib/php/sessions" 

trong /mnt/my-proj/app/config/config.yml giải quyết vấn đề. Mọi điều chỉnh của ini-Files trong /etc/php/7.0/ không cần thiết (các tệp đó vẫn chỉ có giá trị mặc định).

Nhưng tôi đi lang thang tại sao tôi không nhận được thông báo lỗi đó trong sản phẩm?

+0

Bạn đã lưu tôi !!Xảy ra với tôi với SF3 + PHP7 + Vagrant, có lẽ nó liên quan đến thực tế là '/ vagrant' được chia sẻ với host và host là cửa sổ. - ** NOTE: ** Tất nhiên điều này khác nhau giữa devel và production, vì vậy hãy cân nhắc thêm 'save_path' vào một tham số parametrizable trong' parameters.yml' như 'session_save_path:"/var/lib/php/sessions "' và 'session_save_path:"% kernel.root_dir%/../var/sessions /% kernel.environment% "' trong các tham số devel và production tương ứng và sau đó sử dụng 'save_path:"% session_save_path% "' trong 'config.yml' . –

+0

Tôi vẫn không hiểu lý do tại sao điều này cũng hữu ích vì các điều khoản cũng tốt trên 'var/sessions'. – Mantas

0

Ngoài câu trả lời trước đó từ Juri Sinitson, nó cũng giải quyết cho tôi tinh chỉnh VM thay vì tinh chỉnh cơ sở dự án.

Thêm vào Vagrant Provisioner gốc bash của tôi dòng này:

sed -i "s/www-data/vagrant/g" /etc/apache2/envvars 
service apache2 restart 

Làm cho chạy apache như vagrant. Điều này tạo ra apache nhiều quyền lực hơn trên thư mục được chia sẻ khi nó xuất hiện cho hệ thống tập tin mà nó là người dùng vagrant và không phải là người dùng www-data người sẽ chạm vào đó.

Có thể đây là 'phụ tá' có liên quan hoặc như vậy.

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