Forum und email

תמיכה בשיטת PUT

PHP מספקת תמיכה בשיטת HTTP PUT שבה משתמשים netscape composer ו-W3C Amaya. בקשת PUT פשוטות יותר מהעלאת קבצים, והן נראות בערך ככה:

PUT /path/filename.html HTTP/1.1
     

בדרך כלל זה יציין שהלקוח רוצה לשמור את התוכן שבא אחרי, כמו: /path/filename.html בעץ הרשת שלך. מובן מאליו שזה לא רעיון טוב עבור Apache או PHP לאשר לכולם באופן אוטומטי לכתוב על קבצים קיימים בעץ הרשת שלך. כדי לטפל בבקשות כאלה, צריך להגיד לשרת שברצונך להפנות בקשות כאלה לסקריפט PHP. על Apache הדבר נעשה על ידי ספריית Script. אפשר לשים את זה כמעט בכל מקום בקובץ הקונפיגורציה של Apache. מקום נפוץ הוא בתוך הבלוק <Directory>או אולי בתוך הבלוק <Virtualhost>. שורה כזו תעשה את הטריק:

Script PUT /put.php
     

זה אומר ל-Apache לשלוח את כל בקשות PUT ל-URI שתואם את המיקום בו שמתם את השורה שמציינת את מיקום הסקריפט put.php. זה בהנחה, כמובן, ש-PHP מאפשרת סיומות .php וש-PHP פעילה.

בתוך הקובץ put.php צריך לכתוב משהו כזה:

<?php copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI); ?>

זה יעתיק את הקובץ למיקום המבוקש על ידי הלקוח. בטח יתעורר בך הרצון לבצע כמה בדיקות ו/או לאמת את המשתמש לפני ביצוע העתקת הקובץ. הטריק היחיד כאן הוא שכש-PHP רואה בבקשה בשיטת PUT, היא מאחסנת את הקובץ שהועלה בקובץ זמני ממש כמו אלה שטופלו מלבד שיטת POST. כשהבקשה מסתיימת, הקובץ הזמני הזה נמחק. לכן, סקריפט ה-PHP שמטפל ב-PUT צריך להעתיק את הקובץ למיקום כלשהו. שם הקובץ של הקובץ הזמני נמצא בתוך המשתנה $PHP_PUT_FILENAME, וניתן לראות את שם הקובץ המוצע בתוך $REQUEST_URI (יכול להשתנות על שרתים שאינם Apache). שם הקובץ המוצע הוא שם שמגדיר הלקוח. הלקוח שולח בקשה ולא פקודה. לכן אפשר, לדוגמה, להעתיק את כל הקבצים שהועלו לספריית העלאות מיוחדת.