sâmbătă, 22 august 2009

Drupal - problemă transmitere (upload) fişiere pe site

M-am confruntat recent cu următoarea situaţie în Drupal 6
  • Am ataşat mai multe fişiere (pdf, excel, imagini etc.) în câteva pagini din site.
  • Deşi erau salvate corect în subdirectorul /sites/default/files, fişierele nu puteau fi citite din pagina web - Apache dădea eroare de acces.
Analizând problema, am observat că
  • Fişierele sunt salvate cu permisiuni de acces 600 (rw- --- ---), adică nu pot fi citite decât de utilizatorul/procesul care le-a salvat. În mod normal, la alte firme de hosting, ele sunt salvate cu permisiuni 644 (rw- r-- r--), adică pot fi citite de orice utilizator/proces din sistem.
  • Procesele PHP (folosite de Drupal) folosesc un alt utilizator decât procesele Apache (care citesc fişierele transmise pe server).
Concluzia a fost că, dacă nu modific manual drepturile de acces la fişierele respective (sau dacă nu modific cumva drepturile cu care sunt salvate fişierele pe disc), ele nu vor fi accesibile pentru serverul Apache.

Soluţia mea este să folosesc un proces Drupal (deci PHP) ca să citească fişierele de pe disc. În pagina de administrare "/admin/settings/file-system" am setat opţiunea Download Method pe "Private - files are transferred by Drupal".

Apoi am activat dreptul utilizatorilor neautentificaţi de a vedea fişierele transmise pe server.

Asta a rezolvat problema pentru mine.

Niciun comentariu:

Trimiteți un comentariu