Di mana file sementara dibuat?

12

Saya ingin tahu di mana Drupal (atau modulnya) membuat file sementara. Apakah mereka dimasukkan ke situs / default?

Saya terutama berbicara tentang Drupal 6.

AGA
sumber
Modul dapat mencoba membuat file temp di mana saja di situs drupal, tetapi hanya akan berhasil jika konfigurasi server memungkinkannya. Lihat: drupal.org/node/244924
August1914

Jawaban:

16

File dibuat di direktori yang namanya dikembalikan dari file_directory_temp () yang mengembalikan:

  • Nilai variabel Drupal "file_temporary_path," yang ditetapkan dari halaman pengaturan di admin / config / media / sistem file (Drupal 7) atau admin / pengaturan / sistem file (Drupal 6).

  • Jika variabel Drupal itu tidak disetel, maka fungsinya memeriksa salah satu direktori berikut; jika salah satu direktori itu ada, maka itu dikembalikan (dan digunakan).

    • direktori kembali dari ini_get('upload_tmp_dir')
    • pada Windows, direktori "c: \ windows \ temp" dan "c: \ winnt \ temp."
    • pada OS yang berbeda dari Windows, direktori "/ tmp."
    • pada PHP versi 5.2.1 atau lebih tinggi, direktori dikembalikan oleh sys_get_temp_dir().
  • Jika variabel "file_t sementara_path" tidak disetel, dan direktori yang saya cantumkan pada poin sebelumnya tidak ada, atau tidak dapat ditulis, fungsi tersebut menggunakan nilai variabel Drupal "file_public_path"; secara default direktori tersebut memiliki nilai conf_path() . '/files'yaitu "file" direktori yang terdapat dalam direktori yang berisi file setting.php yang digunakan untuk situs Drupal.

Fungsi mengatur variabel "file_t sementara_path" ke direktori yang ditemukannya.

Sejauh yang saya tahu, modul apa pun membuka file sementara menggunakan jalur yang dimulai dengan "temporary: //" (hanya tersedia di Drupal 7 dan lebih tinggi) atau menggunakan file_directory_temp(). Direktori yang dikembalikan dari file_directory_temp()dapat berubah dari sistem ke sistem, tetapi modul selalu menggunakan direktori itu.

Modul Drupal tidak memiliki izin untuk menulis direktori yang berisi modul; cukup sulit modul menggunakan direktori itu untuk membuat file sementara. Jika Anda menemukan modul yang menggunakan direktori yang berisi modul (atau sub-direktori dari direktori itu) laporkan itu sebagai bug.

kiamlaluno
sumber
apakah jawaban Anda berlaku untuk Drupal 6 atau hanya Drupal 7?
iStryker
1
Ini berlaku untuk keduanya, seperti file_directory_temp()yang didefinisikan dalam Drupal 6 juga, dan kode untuk fungsi tidak berubah dari Drupal 6 ke Drupal 7.
kiamlaluno
3

Halaman pengaturan di admin / pengaturan / sistem file berisi pengaturan untuk direktori yang digunakan untuk file sementara.

Beberapa modul dapat memilih direktori berbeda untuk file sementara. Tidak ada lokasi folder standar.

Sebagai contoh, modul ctools akan membuat file cache sementara di direktori / sites / default / files / ctools. Jadi mungkin berbeda.

chrisjlee
sumber
Apakah Anda mengatakan bahwa modul dapat membuat file temp di mana saja di situs drupal? Bisakah itu juga dibuat di root / tema root / modul dll?
AgA
Ya, modul dapat membuat file sementara di mana saja. Mereka biasanya menyimpannya dalam satu folder, seperti halnya ctools. Dari modul pengalaman saya membuat direktori temp mereka sendiri jarang terjadi. Sebagian besar modul menggunakan direktori sementara default yang dibicarakan oleh Chris.
iStryker
@ iStryker Hari ini saya melihat kesalahan di bagian laporan / status di situs web saya mengatakan "direktori file tidak dilindungi" dan menyarankan drupal.org/forum/newsletters/… untuk membuat .htaccess di direktori file dan juga meletakkan "Deny from semua "dalam .htaccess ditemukan di direktori file sementara untuk pencegahan eksekusi kode. Saya bingung. Apakah ini folder 'tmp' di suatu tempat atau setiap modul memiliki foldernya sendiri? APAKAH saya harus meletakkan file .htaccess di setiap folder?
Umair