Saya baru-baru ini memindahkan situs dari localhost ke VPS. Saya telah berhasil membuat file publik dan pribadi dapat ditulis; Namun, saya tidak yakin di mana menemukan folder sementara dan bagaimana cara mengubah izin. Saya terus menerima pesan ini:
File yang ditentukan sementara: // file3Hl91E tidak dapat disalin, karena direktori tujuan tidak dikonfigurasi dengan benar. Ini mungkin disebabkan oleh masalah dengan izin file atau direktori. Informasi lebih lanjut tersedia di log sistem.
Saya menggunakan Virtualmin, Drupal 7, dan server Debian. Direktori sementara saya saat ini adalah /tmp
.
Di settings.php Anda
Ini akan bekerja pada sistem unix 99% dari waktu.
Biasanya direktori / tmp ada pada sistem UNIX dengan izin terbuka, dan itu ada khusus untuk file sementara dan sering diatur untuk meningkatkan kinerja.
Anda dapat memeriksa izin dengan menjalankan
ls -al /tmp
di baris perintah.Jika Anda tertarik membaca lebih lanjut tentang ini, lihat https://en.wikipedia.org/wiki/Tentara_folder
sumber
/tmp
tidak memiliki izin yang tepat. Ia bahkan bertentangan dengan jawaban yang diterima (yang juga tidak bagus untuk jawabannya).Sangat penting untuk memahami bahwa masalah izin dapat ada di KEDUA direktori sementara yang Anda tentukan (yang didefinisikan di admin / config / media / file-system) DAN di folder tempat file sementara itu akan disalin. Saya telah melihat kesalahan ini beberapa kali dan biasanya bukan masalah dengan folder sementara, tetapi folder terakhir tempat file tersebut disalin setelah tinggal di folder temp.
Juga memastikan bahwa jalur sistem file publik diatur dengan benar.
sumber
Saya punya masalah yang pasti dan memastikan untuk menggunakan jalur relatif (situs / default / file / tmp) untuk lokasi folder tmp saya seperti yang disarankan dan saya juga mengubah izin pada folder tmp untuk memastikan itu dapat ditulis oleh apache tetapi masalah saya masih ada . jadi saya memutuskan untuk memeriksa pesan log (Laporan >> Pesan log terbaru) untuk melihat apakah saya bisa mendapatkan pemahaman yang lebih baik tentang apa masalahnya. Dengan melakukan ini saya mendapat pesan yang lebih spesifik:
Ini mendorong saya untuk memeriksa izin pada folder js di situs / default / file dan ternyata apache tidak bisa menulis ke sana sehingga dengan mengubah izin ke 775 pada folder itu saya menyingkirkan pesan kesalahan saya. Jadi saya menyarankan agar Anda memeriksa izin untuk semua sub-folder di situs / default / file dan tidak hanya folder tmp jika Anda belum menyelesaikan masalah Anda. Saya pikir saya akan membagikan info ini.
sumber
sudo chgrp -R www-data /var/www/mysite
dengan "mengubah izin menjadi 775" . Ini TIDAK diperlukan. Drupal tidak perlu menulis ke setiap folder. Hanya folder file publik, pribadi, dan tmp Anda.Anda dapat menemukan pengaturan sistem file dalam
admin/config/media/file-system
mengubahnya ke / tmpAnda juga dapat memeriksa admin / laporan / status untuk masalah pengaturan apa pun
tentang / tmp izin Anda dapat memberikannya 755 dan Anda akan menemukannya di / public_html
sumber
Pesan kesalahan terkadang bisa menyesatkan
Jika dikatakan masalahnya adalah dengan direktori tujuan, apache mungkin tidak memiliki izin untuk menulis ke subfolder situs / default / file yang ingin Drupal masukkan file.
Solusi yang baik adalah menjadikan pengguna apache pemilik semua file dan direktori di bawah situs / default / file
Atau sesuatu yang serupa harus reslove masalah direktori tujuan. Periksa kembali apakah pemilik telah menulis dan menjalankan izin pada semua subdirektori.
sumber
chown -R www-data:www-data /var/www/html/sites/default/files/
Direktori file: Pemecahan Masalah Server Web berbasis Apache
Jika file direktori tidak "dimiliki" oleh server Web, ada dua cara untuk melanjutkan. Petunjuk ini menganggap Anda memiliki akses shell ke server Web. Jika Anda tidak memiliki akses shell, silakan hubungi penyedia hosting Anda untuk dukungan tambahan.
Idealnya Anda akan dapat mengubah "pemilik" file direktori agar sesuai dengan nama server Web. Pada server berbasis Unix atau Linux, Anda dapat memverifikasi "siapa" yang dijalankan server Web dengan mengeluarkan perintah berikut:
Bergantung pada server Web Anda, salah satu dari perintah ini akan mengembalikan serangkaian baris seperti ini:
Kolom pertama dalam teks yang dikembalikan adalah "pengguna" yang dijalankan oleh server Web Anda. Dalam hal ini pengguna adalah www-data. Untuk membuat direktori file Anda dapat ditulisi oleh server Web, Anda perlu menetapkan kembali kepemilikannya menggunakan perintah berikut:
Jika Anda tidak memiliki izin yang memadai pada server Anda untuk mengubah kepemilikan folder, opsi terbaik berikutnya adalah memberikan akses tulis grup ke folder dengan perintah berikut:
Anda juga harus dapat menyesuaikan izin direktori menggunakan program FTP seperti diuraikan di atas.
Setelah Anda menyelesaikan langkah-langkah ini, konfirmasi izin yang sesuai telah ditetapkan dengan menavigasi ke Administer -> Laporan -> Laporan status. Gulir ke bagian yang berlabel, "Sistem file" dan konfirmasikan pengaturan Anda sekarang sudah benar.
Sumber: Direktori file
sumber
Sumber kesalahan lain adalah tidak bisa menulis ke folder file. Dalam kasus saya, saya menyelesaikannya menggunakan:
sumber
Dalam beberapa situasi ini dapat dengan mudah diperbaiki dengan menghapus folder 'ctools' dan 'js' dalam default / file. Folder-folder ini diciptakan kembali oleh sistem jika diperlukan. Kadang-kadang ketika membuat instalasi baru dari situs yang ada folder ini sudah menyebabkan masalah. Juga jika CSS Anda tidak berfungsi setelah melakukan instalasi baru dari situs yang sudah ada, ini juga dapat diperbaiki dengan menghapus file-file ini dan membiarkan drupal membuatnya kembali.
sumber
Konfigurasi saya yang lama dan bermasalah
Konfigurasi baru dan berfungsi dengan baik saya
sumber
Izin yang benar untuk folder sementara tergantung pada konfigurasi server web Anda.
Jika menjalankan Drupal dengan PHP sebagai modul server web, misalnya Apache, ketika pengguna yang didefinisikan dalam file konfigurasi server web utama menggunakan arahan Pengguna harus memiliki akses tulis untuk itu.
% grep -i "user" /etc/httpd/conf/httpd.conf
Apache pengguna
sumber
Saya memiliki masalah yang sama setelah pindah dari satu server ke yang lain.
Saya mencoba semua yang disarankan di sini, mengatur folder ke 755 dan seterusnya.
Folder sementara saya disetel ke "" tmp7zXhVVCO "dan itu benar-benar menyalin file instalasi dengan baik, setelah setiap coba lagi saya melihat file temp disalin di sana, tetapi instalasi tetap gagal.
Masalahnya adalah pemilik bukan hak, yang mengapa 777 menghapus kesalahan ini, tetapi kita semua tahu bahwa ini bukan cara untuk pergi di lokasi produksi.
sumber
The directory ../temp2 does not exist and could not be created.
Saya tidak terlalu menyukai jawaban yang ada jadi saya hanya akan memulai sendiri yang mungkin akan saya perbarui dari waktu ke waktu. Terutama dengan perintah shell.
Untuk saat ini, jalankan ini dari
sites/example.com
:sumber
Dari Konfigurasi -> Media -> Sistem File Saya menghapus katalog / temp. Setelah itu saya tidak punya masalah.
sumber
Saya memiliki masalah yang sama pada migrasi. Saya memiliki chmod 777 semua situs / default / file tetapi kesalahan masih terjadi. Saya mengubah izin 775 di situs / default / file dan pesan hilang. Saya bukan masalah jalur pribadi, milik saya adalah / var / tmp tetapi izin 775.
sumber
Jika Anda mengalami masalah ini menggunakan Pantheon dan terus mendapatkan kesalahan setelah mengatur path direktori file (temp), Anda mungkin juga perlu mengganti mode Connection pada dasbor instance dev Anda dari Git ke SFTP.
Situs Drupal Anda mungkin berusaha menyimpan file ke direktori yang dikelola oleh Git (mis. Jika Anda mengubah pengaturan tata letak dan sejenisnya dalam tema Tema Adaptif). Untuk melakukannya, beralihlah ke SFTP. Setelah file disimpan, Anda dapat beralih kembali ke Git, dan dasbor akan meminta Anda untuk melakukan perubahan yang telah dilakukan pada server.
sumber
Saya memiliki masalah yang sama.
Saya menggunakan IIS di Windows. Akhirnya masalahnya adalah untuk izin di situs folder / default / file dan, jelas, di situs / default / file / tmp.
Akhirnya saya memberi lagi "izin penuh" ke folder, dan itu berhasil.
Salam
sumber