2011-02-07 29 views
48

Vị trí mặc định của tệp phiên trên cài đặt Apache/PHP trên Ubuntu 10.10 là gì?Vị trí cho tệp phiên trong Apache/PHP

+6

chỉ cần thực hiện một trang với '' Và tìm kiếm 'session.save_path'. – prodigitalson

+1

Thông thường/tmp (IIRC) nhưng kiểm tra php.ini của bạn cho session.save_path –

Trả lời

51

mặc địnhsession.save_path được đặt thành "" sẽ đánh giá thư mục tạm thời của hệ thống. Xem nhận xét này tại số https://bugs.php.net/bug.php?id=26757 ghi rõ:

Giá trị mặc định mới cho save_path trong releaess sắp tới (sic) sẽ là chuỗi trống khiến thư mục tạm thời được thăm dò.

Bạn có thể sử dụng sys_get_temp_dir to return the directory path used for temporary files

Để tìm hiện phiên tiết kiệm đường dẫn, bạn có thể sử dụng

Tham khảo this answer để tìm ra những con đường tạm thời là khi hàm này trả về một chuỗi rỗng.

+43

Và từ dòng lệnh chỉ cần thực hiện php -r 'echo session_save_path(), "\ n";' –

+0

Vị trí được đặt và không phải là 'mặc định' trong Ubuntu 10.10. Một bản PHP sạch sẽ có thể cung cấp cho bạn điều này, nhưng không phải theo bất kỳ bản dựng Debian/Ubuntu nào mà tôi đã sử dụng. Câu hỏi orig liên quan đến Ubuntu 10.10. Vì vậy, chỉ cần nhìn nó lên trên dòng lệnh cho mỗi bình luận cuối cùng (hoặc câu trả lời của tôi) vì vị trí có thể khác với 'mặc định'/trống/tmp tùy thuộc vào phân phối Linux được sử dụng .. – bshea

1

Tôi tin vào/tmp /. Kiểm tra chức năng phpinfo của bạn mặc dù, nó nên nói session.save_path trong đó một nơi nào đó.

+0

Mặc dù tài liệu PHP nói rằng "/ tmp" là mặc định, tất cả các bản phân phối Linux mà tôi đã cố gắng không đặt các tệp phiên trong '/ tmp '- bạn có biết điều gì làm được không? Đó có phải là trường hợp nếu bạn xây dựng PHP từ nguồn? Khi "session.save_path" trống rỗng, có thể khó tìm ra nơi các tệp đi (do đó câu hỏi này, tôi nghi ngờ) – Rich

-7

Tùy thuộc vào loại máy chủ bạn đang chạy, máy chủ có thể thay đổi. Để định vị thư mục, hãy tìm phần sau trong tệp php.ini của bạn.

upload_tmp_dir = "c:/wamp/tmp"

Thư mục có thể khác nhau cho bạn.

+2

Câu hỏi dành cho tệp phiên, tệp không được tải lên – Rich

13

Một vị trí mặc định thông thường bên cạnh /tmp//var/lib/php5/

+0

Làm thế nào đến/var/lib/php5/không bao giờ ghi và yêu cầu chmodding/chowning. PHP không nên đặt vị trí phiên có thể ghi theo mặc định? – CMCDragonkai

+1

Tôi tưởng tượng nó là như vậy trên máy chủ chia sẻ những người khác không thể cố gắng để cướp các phiên họp của mọi người. Tức là, ghi vào phiên nói "username: admin" và thiết lập một ID phiên tùy ý, sau đó thiết lập PHPSESSID cho điều đó. Sẽ rất dễ dàng để truy cập một cái gì đó như Drupal hoặc Wordpress trên một môi trường máy chủ chia sẻ. (Nó sẽ chỉ đăng nhập bạn làm tài khoản quản trị) – Mattisdada

50

Đầu tiên kiểm tra giá trị của session.save_path sử dụng ini_get('session.save_path') hoặc phpinfo(). Nếu đó là không có sản phẩm nào, sau đó nó sẽ hiển thị nơi các tập tin phiên được lưu. Trong nhiều trường hợp, nó trống theo mặc định, trong trường hợp này hãy đọc:

Trên máy Ubuntu hoặc Debian, nếu session.save_path không được đặt, thì tệp phiên được lưu trong /var/lib/php5.

Trên hệ thống RHEL và CentOS, nếu session.save_path không được thiết lập, các file phiên sẽ được lưu trong /var/lib/php/session

Tôi nghĩ rằng nếu bạn biên dịch PHP từ mã nguồn, sau đó khi session.save_path không được thiết lập, các file phiên sẽ được lưu trong /tmp (Tôi chưa tự mình thử nghiệm).

+1

Tôi đang sử dụng Ubuntu 12.04.5 LTS và, vì một lý do nào đó (tôi không thay đổi bất kỳ điều gì trong 'php.ini') phiên của tôi là dưới'/var/lib/php5/sessions' –

+0

"Chưa đặt"? Nó được thiết lập - nhưng đã nhận xét trong php.ini. Điều này không có nghĩa là nó không có giá trị hoặc không phải là 'set'. Từ dòng lệnh chỉ cần làm: 'php -i | grep session.save_path' cho CLI (và có thể là Apache) phiên lưu đường dẫn. Ngoài ra, một 'php.ini' đã cho thường sẽ hiển thị đường dẫn 'mặc định' - nó chỉ được nhận xét. – bshea

+0

Và có: nếu không có gì được biên dịch ở dạng đường dẫn mặc định (không phải trường hợp với hầu hết các bản phân phối), một khoảng trống sẽ được sử dụng (mặc định biên dịch). Mà sau đó sẽ sử dụng vùng tạm thời hệ thống (thường là '/ tmp') làm giá trị dự phòng/mặc định của nó. Vui lòng tham khảo http://php.net/manual/en/session.configuration.php#ini.session.save-path – bshea

2

Tôi gặp sự cố tương tự khi tìm ra đường dẫn chính xác cho các phiên trên máy Mac. Tất cả trong tất cả, tôi phát hiện ra rằng PHP của CLI có một thư mục tạm thời khác với mô-đun Apache: Apache đã sử dụng /var/tmp, trong khi CLI sử dụng một cái gì đó như /var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T. Nhưng cả hai cách, sys_get_temp_dir() cho tôi đường dẫn đúng khi session.save_path trống. Sử dụng PHP 5.5.4.

8

Nếu không chắc chắn về mặc định được biên dịch, hãy xem php.ini cho Apache:

Ubuntu/Debian địa điểm hiện tại:
php5 Cũ hơn cài đặt: /etc/php5/apache2/php.ini
Ubuntu 16.XX và/hoặc php5 hoặc php7: /etc/php/*/apache2/php.ini

Thông thường, điều này sẽ hiển thị các nhận xét ra giá trị mặc định .

hay:

php -r 'echo session_save_path() . "\n";' 

hay:

php -i | grep session.save_path 

hay:

php -r 'echo phpinfo();' | grep session.save_path 

từ dòng lệnh.

Lưu ý-

Dòng phiên bản 'cli'/lệnh của php.ini là thường giống như các phiên bản Apache như xa như lưu các thiết lập mặc định con đường. Bạn cũng có thể sử dụng lệnh tương tự để lặp lại cài đặt Apache cho lệnh wget/curl hoặc trang web. Nhưng, dễ dàng hơn nhiều để chỉ grep cho nó trong php.ini Apache.

CHỈNH SỬA: Mỗi @aesede nhận xét -> Đã thêm php -i. Cảm ơn

+5

Chỉ cần thông tin bạn có thể làm 'php -i' trong CLI để có được phpinfo() tương đương. – aesede

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