Cấu hình thư mục tạm thời


48

Gần đây tôi đã chuyển một trang web từ localhost sang VPS. Tôi đã quản lý để làm cho các tập tin công cộng và riêng tư có thể ghi được; tuy nhiên, tôi không chắc chắn nơi tìm thư mục tạm thời và cách thay đổi quyền. Tôi tiếp tục nhận được tin nhắn này:

Tệp được chỉ định tạm thời: // file3Hl91E không thể được sao chép, vì thư mục đích không được cấu hình đúng. Điều này có thể được gây ra bởi một vấn đề với quyền truy cập tập tin hoặc thư mục. Thêm thông tin có sẵn trong nhật ký hệ thống.

Tôi đang sử dụng Virtualmin, Drupal 7 và máy chủ Debian. Thư mục tạm thời hiện tại của tôi là /tmp.

Câu trả lời:


46

Kiểm tra Quản trị viên -> Cấu hình -> Phương tiện -> Hệ thống tệp để cá nhân hóa đường dẫn tmp của bạn. Đảm bảo sử dụng các đường dẫn tương đối và có các đặc quyền phù hợp cho người dùng Apache.

Cá nhân tôi thích bài viết này sửa tập tin tải lên . Anh ấy có những quan sát tốt. Nó làm việc cho tôi.

Gần đây, tôi đã tải trang web của mình xuống máy tính Mac. Nó xảy ra rằng trong máy Mac của tôi, tôi đã sử dụng mod_userdircho Apache và tôi quên rằng trong /etc/apache2/users/nameofuser.conftôi cần phải thiết lập AllowOverride All, nếu không tôi sẽ có thông báo sau:

Không thể sao chép tệp tạm thời do thư mục đích không được cấu hình đúng.


Liên kết bao gồm không hoạt động
pal4life

liên kết đã trở lại !! các tác giả vui lòng đặt lại trang web!
cayerdis

2
Sẽ tốt hơn nếu thêm một tổng hợp của những "quan sát" trong câu trả lời.
tài chính fifi

4
Liên kết là xuống một lần nữa.
Kari Kääriäinen


17

Trong cài đặt của bạn.php

$conf['file_temporary_path'] = '/tmp';

Điều này sẽ làm việc trên các hệ thống unix 99% thời gian.

Thông thường thư mục / tmp tồn tại trên các hệ thống UNIX có quyền mở và nó tồn tại đặc biệt cho các tệp tạm thời và thường được thiết lập để cải thiện hiệu suất.

Bạn có thể kiểm tra quyền bằng cách chạy ls -al /tmptrên dòng lệnh.

Nếu bạn quan tâm đến việc đọc thêm về điều này, hãy xem https://en.wikipedia.org/wiki/T tạm_folder


1
Đây không thực sự là một câu trả lời tốt trong quan điểm của tôi. Không có lời giải thích và nó có khả năng không hoạt động nếu /tmpkhông có quyền. Nó thậm chí còn mâu thuẫn với câu trả lời được chấp nhận (cũng không tuyệt vời lắm).
tài chính fifi

Tôi không nghĩ câu trả lời đòi hỏi nhiều lời giải thích, tôi muốn nói rằng cách biến $ conf hoạt động trong settings.php là kiến ​​thức chung cho các nhà phát triển Drupal. Một trong những điều tốt đẹp về câu trả lời này là nó ngắn gọn. Tôi không chắc chắn rằng nó mâu thuẫn với câu trả lời được chấp nhận, câu trả lời được chấp nhận sẽ hoạt động và đây là một giải pháp thay thế. Sự khác biệt giữa phương pháp này và thực hiện nó thông qua UI là nó sẽ hoạt động trên nhiều môi trường, nhưng bạn sẽ phải đặt riêng nó trong UI cho từng môi trường.
chim

16

Điều quan trọng là phải hiểu rằng vấn đề về quyền có thể tồn tại trong CẢ HAI thư mục tạm thời được chỉ định của bạn (được xác định tại admin / config / media / file-system) VÀ tại thư mục nơi tệp tạm thời sẽ được sao chép. Tôi đã gặp lỗi này một vài lần và nó thường không phải là vấn đề với thư mục tạm thời, mà là thư mục cuối cùng nơi tệp đó được sao chép sau khi sống trong thư mục tạm thời.

Cũng đảm bảo rằng đường dẫn hệ thống tệp công khai được đặt chính xác.


1
Đây là trường hợp đối với tôi. Trong trường hợp của tôi, tôi cần đặt quyền sở hữu của thư mục / trang web / default / files mới được tạo thành USERNAME: apache (trên một số hệ thống mà nhóm sẽ không được gọi là ai).
Evan Donovan

8

Tôi đã gặp sự cố chính xác này và đảm bảo sử dụng đường dẫn tương đối (trang web / mặc định / tệp / tmp) cho vị trí thư mục tmp của tôi như được đề xuất và tôi cũng đã thay đổi quyền trên thư mục tmp để đảm bảo có thể ghi được bằng apache nhưng vấn đề của tôi vẫn tồn tại . vì vậy tôi quyết định kiểm tra các thông điệp tường trình (Báo cáo >> Thông điệp nhật ký gần đây) để xem liệu tôi có thể hiểu rõ hơn về vấn đề này không. Bằng cách này, tôi nhận được một tin nhắn cụ thể hơn:

Không thể đặt quyền truy cập tệp ở chế độ công khai: // js.

Điều này nhắc tôi kiểm tra các quyền trên thư mục js trong các trang web / default / files và vì hóa ra apache không thể ghi vào nó vì vậy bằng cách thay đổi quyền thành 775 trên thư mục đó tôi đã thoát khỏi thông báo lỗi của mình. Vì vậy, tôi sẽ đề nghị bạn kiểm tra quyền cho tất cả các thư mục con trong trang web / default / files và không chỉ thư mục tmp nếu bạn chưa giải quyết vấn đề của mình. Chỉ cần nghĩ rằng tôi sẽ chia sẻ thông tin này.


Vấn đề của tôi cũng giống như vậy nhưng tôi sử dụng như sau để sửa nó: sudo chgrp -R www-data / var / www / mysite
Wavesailor

Giả sử bạn đang kết hợp sudo chgrp -R www-data /var/www/mysitevới "thay đổi quyền thành 775" . Điều này là không cần thiết. Drupal không cần phải ghi vào mọi thư mục. Chỉ các thư mục tệp công khai, riêng tư và tmp của bạn.
rovr138

Có - điều quan trọng ở đây, không có câu trả lời nào khác được đề cập, là tìm thư mục đích (thường ở đâu đó trong các trang web / mặc định / tệp - / css và / js là các ứng cử viên chính nếu bạn bật tính năng ghép nối JS / CSS) và bạn có thể chỉ có được điều đó bằng cách xem nhật ký.
William Turrell

Tuy nhiên * * nhãn * trên biểu mẫu quản trị viên nói "Thư mục này không thể truy cập được trên web.", Vì vậy, trừ khi bạn đã thực hiện các bước để bảo vệ / site / default / files / tmp trong Apache hoặc Nginx, sau đó đặt nó có một ý tưởng tồi
William Turrell

5

bạn có thể tìm thấy cài đặt hệ thống tệp khi admin/config/media/file-system thay đổi nó thành / tmp

bạn cũng có thể kiểm tra quản trị / báo cáo / trạng thái cho bất kỳ vấn đề cài đặt nào

về quyền / tmp bạn có thể cung cấp cho nó 755 và bạn sẽ tìm thấy nó trong / public_html


2

Thông báo lỗi có thể bị sai lệch

Nếu nó nói vấn đề là do thư mục đích, thì apache có thể không có quyền ghi vào thư mục con / default / files mà Drupal muốn tot đặt tệp vào.

Một giải pháp tốt là làm cho người dùng apache trở thành chủ sở hữu của tất cả các tệp và thư mục trong các trang web / default / files

cd /path/to/sites/default
sudo chown -R _www:_www files

Hoặc một cái gì đó tương tự nên reslove vấn đề thư mục đích. Kiểm tra kỹ xem chủ sở hữu có quyền viết và thực thi quyền trên tất cả các thư mục con không.


1
Giải pháp này đã cứu ngày của tôi, tôi đang làm việc trên Ubuntu 14.014 và thực hiện điều nàychown -R www-data:www-data /var/www/html/sites/default/files/
Rishi Kulshreshtha

2

Thư mục tệp: Khắc phục sự cố Máy chủ web dựa trên Apache

Nếu các tệp thư mục không được "sở hữu" bởi máy chủ Web, có hai cách để tiến hành. Các hướng dẫn này giả sử bạn có quyền truy cập shell vào máy chủ Web. Nếu bạn không có quyền truy cập shell, vui lòng liên hệ với nhà cung cấp dịch vụ lưu trữ của bạn để được hỗ trợ thêm.

Lý tưởng nhất là bạn sẽ có thể thay đổi "chủ sở hữu" của các tệp thư mục để khớp với tên của máy chủ Web. Trên máy chủ dựa trên Unix hoặc Linux, bạn có thể xác minh "ai" máy chủ Web đang chạy bằng cách ban hành các lệnh sau:

$ ps aux  |grep apache # for Apache 2.x
$ ps aux  |grep httpd # for Apache 1.x

Tùy thuộc vào máy chủ Web của bạn, một trong các lệnh này sẽ trả về một loạt các dòng như thế này:

www-data 13612  0.1  0.9  50640 20340 ? S 12:29   0:08 /usr/sbin/apache2 -k start

Cột đầu tiên trong văn bản trả về là "người dùng" mà máy chủ Web của bạn đang hoạt động. Trong trường hợp này, người dùng là dữ liệu www. Để làm cho thư mục tệp của bạn có thể ghi được bởi máy chủ Web, bạn cần gán lại quyền sở hữu của nó bằng lệnh sau:

$ chown -R www-data sites/default/files
$ chmod -R 0700 sites/default/files

Nếu bạn không có đủ quyền trên máy chủ của mình để thay đổi quyền sở hữu thư mục, tùy chọn tốt nhất tiếp theo là cung cấp quyền truy cập ghi nhóm vào thư mục bằng lệnh sau:

$ chmod -R 0770 sites/default/files

Bạn cũng có thể điều chỉnh các quyền của thư mục bằng chương trình FTP như đã nêu ở trên.

Khi bạn đã hoàn thành các bước này, hãy xác nhận các quyền phù hợp đã được chỉ định bằng cách điều hướng đến Quản trị -> Báo cáo -> Báo cáo trạng thái. Cuộn đến phần được gắn nhãn, "Hệ thống tệp" và xác nhận cài đặt của bạn hiện chính xác.

Nguồn: Thư mục tập tin


1

Một nguồn lỗi khác là nó không thể ghi vào thư mục tập tin. Trong trường hợp của tôi, tôi đã giải quyết nó bằng cách sử dụng:

$chmod 777 sites/default/files/pictures/

15
woah, thật sao? 777 trên những gì rõ ràng một trang web sản xuất? Đó chỉ là lời khuyên vô trách nhiệm.
David Meister

Vâng, cho nó ít nhất 755.
dùng1359

@DavidMeister Tôi đã nâng cấp bạn nhưng không may là chia sẻ lưu trữ (nôn) đôi khi 777 là cách duy nhất Apache có thể ghi vào thư mục

@andrewtweber bạn có chắc về điều này không? Ngay cả trong một môi trường lưu trữ được chia sẻ, 775 cũng nên lỏng lẻo như bạn cần. Bạn có thể vui lòng cho một ví dụ về một nhà cung cấp dịch vụ lưu trữ chia sẻ yêu cầu 777 không? Nếu bạn sử dụng 777 trên máy chủ dùng chung và bạn không có VPS, mọi người khác trên máy chủ có thể truy cập các tệp của bạn.
David Meister

3
@andrewtweber cũng có, bài học không phải là "lưu trữ chia sẻ" yêu cầu 777 mà là "lưu trữ kinh khủng" cần 777.
David Meister

1

Trong một số trường hợp, điều này có thể dễ dàng khắc phục bằng cách xóa các thư mục 'ctools' và 'js' trong mặc định / tệp. Các thư mục này được hệ thống tạo lại nếu cần. Đôi khi, khi thực hiện cài đặt mới của một trang web hiện có, các thư mục này đã gây ra sự cố. Ngoài ra, nếu CSS của bạn không hoạt động sau khi thực hiện cài đặt mới của một trang web hiện tại thì điều này cũng có thể được khắc phục bằng cách xóa các tệp này và để drupal tạo lại chúng.


0

Cấu hình cũ và có vấn đề của tôi

chmod 664 -R /var/drupal-bc/sites/default/files
chmod 664 -R /var/drupal-bc/sites/default/private

drw-rw-r-- 2 www-data www-data  4096 Jul 31 12:35 files
drw-rw-r-- 3 www-data www-data  4096 Jul  5 15:08 private

Cấu hình mới và hoạt động tốt của tôi

chmod 774 -R /var/drupal-bc/sites/default/files
chmod 774 -R /var/drupal-bc/sites/default/private

drwxrwxr-- 2 www-data www-data  4096 Jul 31 12:35 files
drwxrwxr-- 3 www-data www-data  4096 Jul  5 15:08 private

Có, thực thi là bắt buộc trên các thư mục để có thể sử dụng chúng. 775 có thể sẽ phù hợp hơn 774. Trong trường hợp của bạn với cách đặt quyền sở hữu của bạn, 755 cũng sẽ là một lựa chọn tốt.
rooby

0

Quyền chính xác cho thư mục tạm thời phụ thuộc vào cấu hình máy chủ web của bạn.

Nếu chạy Drupal với PHP dưới dạng mô-đun của máy chủ web, ví dụ như Apache, khi người dùng được xác định trong tệp cấu hình máy chủ web chính sử dụng Chỉ thị người dùng sẽ phải viết acccess cho nó.

% grep -i "người dùng" /etc/httpd/conf/httpd.conf

Người dùng apache


0

Tôi gặp vấn đề tương tự sau khi chuyển từ máy chủ này sang máy chủ khác.

Tôi đã thử mọi thứ được đề xuất ở đây, đặt thư mục thành 755, v.v.

Thư mục tạm thời của tôi được đặt thành "" tmp7zXhVVCO "và nó thực sự sao chép các tệp cài đặt độc đáo, sau mỗi lần thử lại tôi thấy tệp tạm thời được sao chép ở đó, nhưng cài đặt không thành công.

Tuy nhiên, vấn đề là chủ sở hữu không phải là quyền, vì lý do tại sao 777 loại bỏ lỗi này, nhưng tất cả chúng ta đều biết rằng đây không phải là một cách để đi vào các trang web sản xuất.

Những gì bạn nên làm là thay đổi thư mục tạm thời của bạn thành bất kỳ thứ gì khác, chẳng hạn như "temp" hoặc bất cứ điều gì phù hợp với bạn, miễn là nó chưa tồn tại , drupal sẽ tạo thư mục mới này với quyền apache , không phải quyền người dùng và vấn đề của bạn sẽ được giải quyết.


Khi tôi làm điều này, tôi nhận được lỗiThe directory ../temp2 does not exist and could not be created.
Paul Trotter

0

Tôi thực sự không thích bất kỳ câu trả lời hiện có nào vì vậy tôi sẽ tự mình bắt đầu một câu trả lời mà có lẽ tôi sẽ cập nhật theo thời gian. Chủ yếu với các lệnh shell.

Hiện tại, hãy chạy nó từ sites/example.com:

MYSITE=example.com
FILES=sites/$MYSITE/files  
# CSS and JS might also cause trouble and advagg has its own dirs
TMPDIRS=$FILES/tmp $FILES/js $FILES/css $FILES/advagg_*
drush vset file_temporary_path $FILES/tmp # seems better than using /tmp
drush vset file_directory_temp $FILES/tmp
cd $(drush drupal-directory)   
chown www-data -R $TMPDIRS
chmod 755 -R $TMPDIRS

0

Từ Cấu hình -> Phương tiện -> Hệ thống tệp Tôi đã xóa / temp-catalog. Sau đó tôi không có vấn đề gì.


0

Tôi đã có cùng một vấn đề về di cư. Tôi có chmod 777 tất cả các trang web / mặc định / tập tin nhưng lỗi vẫn xảy ra. Tôi thay đổi quyền 775 trên các trang web / mặc định / tập tin và tin nhắn biến mất. Tôi không phải là một vấn đề đường dẫn riêng tư, của tôi là / var / tmp nhưng là sự cho phép 775.


0

Nếu bạn gặp phải vấn đề này khi sử dụng Pantheon và tiếp tục gặp lỗi sau khi đặt (các) đường dẫn thư mục tệp (temp), bạn cũng có thể cần phải chuyển chế độ Kết nối trên bảng điều khiển dev của bạn từ Git sang SFTP.

Trang web Drupal của bạn có thể đang cố lưu các tệp vào thư mục do Git quản lý (ví dụ: nếu bạn đang thay đổi cài đặt bố cục và tương tự trong chủ đề Thích ứng Chủ đề). Để làm như vậy, chuyển sang SFTP. Khi các tệp đã được lưu, bạn có thể chuyển về Git và bảng điều khiển sẽ nhắc bạn thực hiện các thay đổi đã được thực hiện trên máy chủ.


0

Tôi đã từng gặp vấn đề tương tự.

Tôi đã sử dụng IIS trong Windows. Cuối cùng, vấn đề là về các quyền trong các trang web thư mục / default / files và, rõ ràng, trong các trang web / default / files / tmp.

Cuối cùng tôi đã đưa lại "Toàn quyền" cho các thư mục, và nó đã hoạt động.

Trân trọng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.