Geçici dizini yapılandırma


48

Geçenlerde bir siteyi bir yerel bilgisayardan VPS'ye taşıdım. Genel ve özel dosyaları yazılabilir hale getirmeyi başardım; ancak geçici klasörü nerede bulacağımı ve izinleri nasıl değiştireceğimi bilmiyorum. Bu mesajı almaya devam ediyorum:

Belirtilen dosya geçici: // file3Hl91E, hedef dizin düzgün bir şekilde yapılandırılmadığından kopyalanamadı. Bu dosya veya dizin izinleriyle ilgili bir sorundan kaynaklanıyor olabilir. Daha fazla bilgi sistem günlüğünde mevcuttur.

Virtualmin, Drupal 7 ve Debian sunucusu kullanıyorum. Şu anki geçici dizinim /tmp.

Yanıtlar:


46

Tmp yolunuzu kişiselleştirmek için Yönetici -> Yapılandırma -> Medya -> Dosya Sistemini kontrol edin. Göreceli yolları kullandığınızdan ve Apache kullanıcısı için doğru haklara sahip olduğunuzdan emin olun.

Şahsen bu makale dosya yükleme düzeltmeyi seviyorum . İyi gözlemleri var. Benim için çalıştı.

Son zamanlarda sitemi Mac bilgisayarıma indirdim. mod_userdirMac'imde Apache için kullanıyordum ve /etc/apache2/users/nameofuser.confayarlamam gerektiğini unuttum AllowOverride All, aksi takdirde aşağıdaki mesajı alırım:

Belirtilen dosya geçici olarak kopyalanamadı, çünkü hedef dizin uygun şekilde yapılandırılmadı.


Bağlantı dahil
pal4life

bağlantı geri döndü !! yazar nazikçe siteyi geri koydu!
cayerdis

2
Cevapta bu "gözlemlerin" bir sentezini eklemek iyi olurdu.
fifi finans

4
Bağlantı tekrar kesildi.
Kari Kääriäinen


17

Settings.php içinde

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

Bu, zamanın% 99 unix sistemlerinde çalışacak.

Genellikle / tmp dizini, açık izinlere sahip UNIX sistemlerinde bulunur ve özel olarak geçici dosyalar için bulunur ve genellikle performansı iyileştirmek için kurulur.

ls -al /tmpKomut satırında çalıştırarak izinleri kontrol edebilirsiniz .

Bu konuyla ilgili daha fazla bilgi edinmek isterseniz, bkz. Https://en.wikipedia.org/wiki/Temporary_folder


1
Bu bence gerçekten iyi bir cevap değil. Bir açıklama /tmpyok ve doğru izinlere sahip değilseniz işe yaramayacak gibi görünüyor . Hatta kabul edilen cevaba bile aykırıdır (ki bu kendi başına büyük değildir).
fifi finans

Cevabın çok fazla açıklama gerektirdiğini sanmıyorum, $ conf değişkeninin settings.php dosyasında nasıl çalıştığını Drupal geliştiricileri için genel bir bilgi olduğunu söyleyebilirim. Bu cevapla ilgili güzel şeylerden biri de özlü olmasıdır. Kabul edilen cevaba aykırı olduğundan emin değilim, kabul edilen cevap işe yarayacak ve bu bir alternatif. Bu yöntem ile UI üzerinden yapmak arasındaki fark, bunun birden fazla ortamda çalışacağı, ancak her ortam için UI'ye ayrı ayrı ayarlamanız gerekeceğidir.
şimşir

16

BOTH'ta belirtilen geçici dizininizin (admin / config / media / dosya-sistemde tanımlanmıştır) VE bu geçici dosyanın kopyalanacağı klasörde bir izin problemi olabileceğini anlamak önemlidir. Birkaç kez bu hatayı gördüm ve genellikle geçici klasörle ilgili bir sorun değil , temp klasöründe yaşadıktan sonra bu dosyanın kopyalandığı son klasör.

Ayrıca ortak dosya sistemi yolunun doğru ayarlandığından emin olun.


1
Bu benim için böyleydi. Benim durumumda, yeni oluşturulan / sites / default / files dizininin sahipliğini USERNAME: apache olarak ayarlamam gerekiyordu (bazı gruplarda bu gruba hiçkimse denemezdi).
Evan Donovan,

8

Bu kesin sorunu yaşadım ve önerdiğim gibi tmp klasörü konumum için göreceli yolu (sites / default / files / tmp) kullandığımdan emin oldum ve tmp klasöründeki izinleri apache tarafından yazılabilir olmasını sağlamak için değiştirdim ama sorunum hala mevcuttu . bu yüzden sorunun ne olduğunu daha iyi anlayabildiğimi görmek için log mesajlarını (Raporlar >> Son log mesajları) kontrol etmeye karar verdim. Bunu yaparak daha spesifik bir mesajım var:

Dosya izinleri genel olarak ayarlanamadı: // js.

Bu, js klasöründeki sitelerde / default / files dizinindeki izinleri kontrol etmemi istedi ve apache çıktığında bu klasördeki izinleri 775 olarak değiştirerek hata mesajımdan kurtuldum. Bu nedenle, henüz sorununuzu çözmediyseniz, sitelerde / default / files içindeki tüm alt klasörlerin izinlerini kontrol etmenizi öneririm. Sadece bu bilgiyi paylaşacağımı düşündüm.


Sorunum aynıydı ama düzeltmek için aşağıdakileri kullanıyorum: sudo chgrp -R www-data / var / www / mysite
Wavesailor

"İzinleri 775 olarak değiştirme"sudo chgrp -R www-data /var/www/mysite ile birleştirdiğinizi varsayalım . Bu gerekli DEĞİLDİR . Drupal'ın her klasöre yazması gerekmez . Yalnızca genel, özel ve tmp dosya klasörleriniz.
rovr138,

Evet - buradaki en önemli şey, başka bir cevabın söz edilmemesi, hedef dizini bulmaktır (tipik olarak siteler / varsayılan / dosyalar altında bir yerde - / css ve / js, eğer JS / CSS birleştirme özelliğini açtıysanız, birinci sınıf adaylardır) ve Bunu yalnızca günlüğü görüntüleyerek alabilirsiniz.
William Turrell

… * Ancak * - yönetici formundaki etiket "Bu dizine web üzerinden erişilemez." Yazıyor, bu nedenle / siteyi / default / files / tmp'yi Apache veya Nginx'te korumak için adımlar atamadıysanız, Kötü bir fikir var.
William Turrell

5

dosya sistemi ayarlarını admin/config/media/file-system değiştirerek / tmp olarak bulabilirsiniz

ayrıca herhangi bir ayar sorunu için admin / raporları / durumunu kontrol edebilirsiniz

about / tmp izni 755 verebilir ve / public_html dosyasında bulabilirsiniz.


2

Hata mesajı bazen yanıltıcı olabilir

Sorunun hedef dizinle yapılacağı yazıyorsa, apache muhtemelen Drupal'ın dosyayı koymak istediği sitelere / varsayılan / dosya alt klasörüne yazma iznine sahip değildir.

Apache kullanıcısını sites / default / files altındaki tüm dosya ve dizinlerin sahibi yapmak iyi bir çözümdür

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

Ya da benzer bir şey, hedef dizin sorunlarını çözmelidir. Sahibin tüm alt dizinlere yazma ve yürütme izinleri olup olmadığını iki kez kontrol edin.


1
Bu çözüm günümü kurtardı, Ubuntu 14.014 üzerinde çalışıyorum ve bunu yaptımchown -R www-data:www-data /var/www/html/sites/default/files/
Rishi Kulshreshtha

2

Dosyalar dizini: Apache Tabanlı Web Sunucularına Yönelik Sorun Giderme

Dizin dosyaları Web sunucusu tarafından "sahiplenilmiş" değilse, devam etmenin iki yolu vardır. Bu talimatlar, Web sunucusuna kabuk erişiminiz olduğunu varsaymaktadır. Kabuk erişiminiz yoksa, lütfen ek destek için barındırma sağlayıcınıza başvurun.

İdeal olarak, dizin dosyalarının "sahibini" Web sunucusunun adıyla eşleştirebileceksiniz. Unix veya Linux tabanlı bir sunucuda, aşağıdaki komutları vererek Web sunucusunun "kim" olduğunu kontrol edebilirsiniz:

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

Web sunucunuza bağlı olarak, bu komutlardan biri buna benzer bir dizi satır döndürür:

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

Döndürülen metindeki ilk sütun, Web sunucunuzun çalıştığı "kullanıcı" dır. Bu durumda kullanıcı www-data'dır. Dosya dizininizi Web sunucusu tarafından yazılabilir hale getirmek için, aşağıdaki komutu kullanarak sahipliğini yeniden atamanız gerekir:

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

Sunucunuzda, klasörün sahipliğini değiştirmek için yeterli izniniz yoksa, en iyi ikinci seçenek, aşağıdaki komutu içeren klasöre grup yazma erişimi sağlamaktır:

$ chmod -R 0770 sites/default/files

Ayrıca, yukarıda belirtildiği gibi bir FTP programı kullanarak müdürün izinlerini de ayarlayabilmelisiniz.

Bu adımları tamamladığınızda, Yönet -> Raporlar -> Durum raporuna giderek uygun izinlerin atandığını onaylayın. "Dosya sistemi" etiketli bölüme gidin ve ayarlarınızın doğru olduğunu onaylayın.

Kaynak: dosya dizini


1

Başka bir hata kaynağı da dosyalar klasörüne yazamamasıdır. Benim durumumda kullanarak çözdü:

$chmod 777 sites/default/files/pictures/

15
gerçekten mi? 777 açıkça bir üretim yeri nedir? Bu sadece sorumsuz bir tavsiye.
David Meister

Evet, en azından 755 ver.
user1359 19:13

@DavidMeister Sizi yendim ama ne yazık ki paylaşılan barındırma (kusmuk) bazen 777, Apache'nin bir klasöre yazmasının tek yolu

@ andrewtweber bundan emin misiniz ? Paylaşılan bir barındırma ortamında bile, 775, ihtiyaç duyduğunuz kadar gevşek olmalıdır. Lütfen 777 gerektiren paylaşılan bir barındırma sağlayıcısının bir örneğini verebilir misiniz? Paylaşılan bir sunucuda 777 kullanıyorsanız ve VPS'niz yoksa, sunucudaki herkes dosyalarınıza erişebilir.
David Meister

3
@ andrewtweber da evet, ders "paylaşılan hosting" 777 gerektirir, ama "korkunç barındırma" 777 gerektiriyor.
David Meister

1

Bazı durumlarda bu, varsayılan / dosyalar içindeki 'ctools' ve 'js' klasörlerini silerek kolayca düzeltilebilir. Gerekirse bu klasörler sistem tarafından yeniden oluşturulur. Bazen varolan bir sitenin yeni kurulumunu yaparken, bu klasörler zaten problem yaratır. Ayrıca, CSS’niz mevcut bir sitenin yeni bir kurulumunu yaptıktan sonra çalışmazsa, bu dosyaları silerek ve drupal’ın yeniden oluşturmasına izin vererek bu durum düzeltilebilir.


0

Eski ve sorunlu yapılandırmam

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

Benim yeni ve iyi çalışıyor yapılandırma

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

Evet, kullanabilmeleri için klasörlerde yürütme gereklidir. 775 büyük olasılıkla 774'ten daha uygun olacaktır. Mülkiyetinizin ayarlanma şeklindeki halinizde 755 de iyi bir seçenek olacaktır.
Rooby,

0

Geçici klasör için doğru izinler web sunucusu yapılandırmanıza bağlıdır.

Web sunucusunun modülü olarak PHP ile Drupal kullanıyorsanız, örneğin Apache, Kullanıcı yönlendirmesini kullanarak ana web sunucusu yapılandırma dosyasında tanımlanmış olan kullanıcının yazma erişimine sahip olması gerekir.

% grep -i "kullanıcı" /etc/httpd/conf/httpd.conf

Kullanıcı apache


0

Bir sunucudan diğerine geçtikten sonra da aynı sorunu yaşadım.

Burada önerilen her şeyi denedim, klasörleri 755'e ayarlayıp, vb.

Geçici klasörüm "" tmp7zXhVVCO "olarak ayarlandı ve kurulum dosyalarını güzelce kopyaladı, her yeniden denedikten sonra orada kopyalanan geçici dosyayı gördüm, ancak kurulum başarısız oldu.

Ancak sorun sahip değil, hak sahibi, 777 neden bu hatayı kaldırıyor, ama hepimiz bunun üretim sahalarına gitmenin bir yolu olmadığını biliyoruz.

Yapmanız gereken, geçici klasörünüzü "temp" veya size uygun olan herhangi bir şeye değiştirmek, henüz olmadığı sürece , drupal kullanıcı haklarına değil , apache haklarına sahip olan bu yeni klasörü yaratacaktır . çözülecek.


Bunu yaptığımda hata alıyorumThe directory ../temp2 does not exist and could not be created.
Paul Trotter

0

Mevcut cevapların hiçbirinden hoşlanmıyorum, bu yüzden muhtemelen zamanla güncelleyeceğim tek başıma başlayacağım. Genelde kabuk komutları ile.

Şimdilik şunu çalıştırın 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

Yapılandırma -> Medya -> Dosya Sisteminden / temp-catalogue adlı kullanıcıyı kaldırdım. Ondan sonra hiç problem yaşamadım.


0

Aynı sorunu bir göç için de yaşadım. Chmod 777 var tüm siteler / default / files ama hata hala oluyor. Siteler / varsayılan / dosyalar üzerindeki 775 iznini değiştirdim ve mesaj kayboldu. Özel bir yol sorunu değildim, benim / var / tmp benim 775 iznim.


0

Pantheon'u kullanarak bu sorunu yaşarsanız ve (temp) files dizin yolunu (larını) ayarladıktan sonra hatayı almaya devam ederseniz, dev örneği kontrol panelindeki Bağlantı modunu Git'ten SFTP'ye de değiştirmeniz gerekebilir.

Drupal siteniz, Git tarafından yönetilen bir dizine dosya kaydetmeye çalışıyor olabilir (örneğin, düzen ayarlarını ve benzerlerini Adaptif Temalar temasında değiştiriyorsanız). Bunu yapmak için SFTP'ye geçin. Dosyalar kaydedildikten sonra Git'e geri dönebilirsiniz ve gösterge panosu sizden sunucuda yapılan değişiklikleri yapmanızı ister.


0

Ben de aynı problemi yaşadım.

Windows'ta IIS kullanıyordum. Sonunda sorun, siteler / default / files dizinindeki ve açıkça siteler / default / files / tmp dizinindeki izinler içindi.

Sonunda klasörler için tekrar "Tam izinler" verdim ve işe yaradı.

Saygılarımızla

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.