סביבת זמן הריצה של PHP

הפונקציה של Cloud Run פועלת בסביבה שמורכבת מגרסת מערכת הפעלה עם חבילות של תוספים, תמיכה בשפה וספריית PHP Functions Framework שתומכת בפונקציה ומפעילה אותה. הסביבה הזו מזוהה לפי גרסת השפה, והיא נקראת מזהה זמן הריצה.

הכנת הפונקציה

אפשר להכין פונקציה ישירות ממסוף Google Cloud או לכתוב אותה במחשב המקומי ולהעלות אותה. כדי להכין את המחשב המקומי לפיתוח PHP, אפשר לעיין במאמר בנושא שימוש ב-PHP ב- Google Cloud.

זמני ריצה ודימויי בסיס נתמכים של PHP

זמן ריצה המזהה של סביבת זמן הריצה מקבצים תמונת בסיס בזמן ריצה הוצאה משימוש הוצאה משימוש
PHP 8.5 php85 ‫google-24-full (ברירת מחדל) google-24-full/php85 2029-12-31 2030-06-30
PHP 8.4 php84 ‫google-22-full (ברירת מחדל) google-22-full/php84 2028-12-31 2029-06-30
PHP 8.3 php83 ‫google-22-full (ברירת מחדל) google-22-full/php83 2027-12-31 2028-06-30
PHP 8.2 php82 ‫google-22-full (ברירת מחדל) google-22-full/php82 2026-12-31 2027-06-30
PHP 8.1 php81 google-18-full google-18-full/php81 2025-12-31 2026-06-30
PHP 7.4 php74 google-18-full google-18-full/php74 2024-01-30 2025-01-30

בחירת זמן הריצה

במהלך הפריסה, אפשר לבחור אחד מזמני הריצה הנתמכים של PHP עבור הפונקציה.

אפשר לבחור גרסת זמן ריצה באמצעות Google Cloud המסוף או ה-CLI של gcloud. לוחצים על הכרטיסייה עם ההוראות לשימוש בכלי הרצוי:

gcloud

מציינים את תמונת הבסיס של PHP לפונקציה באמצעות הדגל --base-image, כשפורסים את הפונקציה. לדוגמה:

gcloud run deploy FUNCTION \
    --source . \
    --function FUNCTION_ENTRYPOINT \
    --base-image php85

מחליפים את:

  • FUNCTION בשם הפונקציה שאתם פורסים. אפשר להשמיט את הפרמטר הזה לגמרי, אבל אם תשמיטו אותו, תתבקשו לציין את השם.

  • FUNCTION_ENTRYPOINT עם נקודת הכניסה לפונקציה בקוד המקור. זה הקוד ש-Cloud Run מריץ כשהפונקציה פועלת. הערך של הדגל הזה צריך להיות שם של פונקציה או שם מלא של מחלקה שקיימים בקוד המקור.

הוראות מפורטות לפריסת פונקציה באמצעות ה-CLI של gcloud מופיעות במאמר פריסת פונקציות ב-Cloud Run.

המסוף

אפשר לבחור גרסת זמן ריצה כשיוצרים או מעדכנים פונקציית Cloud Run במסוף Google Cloud . הוראות מפורטות לפריסת פונקציה זמינות במאמר פריסת פונקציות ב-Cloud Run.

כדי לבחור סביבת ריצה במסוף Google Cloud כשיוצרים פונקציה, פועלים לפי השלבים הבאים:

  1. במסוף Google Cloud , נכנסים לדף Cloud Run:

    כניסה ל-Cloud Run

  2. לוחצים על כתיבת פונקציה.

  3. ברשימה Runtime בוחרים גרסת PHP runtime.

  4. לוחצים על Create ומחכים ש-Cloud Run ייצור את השירות באמצעות גרסת פלייסהולדר.

  5. המסוף יפנה אתכם לכרטיסייה מקור, שבה תוכלו לראות את קוד המקור של הפונקציה. לוחצים על שמירה ופריסה מחדש.

הוראות מפורטות לעדכון גרסת זמן הריצה אחרי פריסת הפונקציה מופיעות במאמר פריסה מחדש של קוד מקור חדש.

מבנה קוד המקור

כדי שפונקציות Cloud Run יוכלו למצוא את ההגדרה של הפונקציה, קוד המקור צריך להיות במבנה מסוים. מידע נוסף זמין במאמר בנושא כתיבה של פונקציות Cloud Run.

PHP Configuration

מגדירים את פונקציית ה-PHP באמצעות קובץ php.iniבתיקיית השורש של הפונקציה. אפשר לראות את הגדרות ה-PHP הקיימות באמצעות הפונקציה phpinfo(), כמו בדוגמת הקוד הבאה:


use Psr\Http\Message\ServerRequestInterface;

function phpInfoDemo(ServerRequestInterface $request): string
{
    // phpinfo() displays its output directly in the function's
    // HTTP response, so we don't need to explicitly return it
    //
    // Note: we recommend deleting the deployed Cloud Function once you no
    // longer need it, as phpinfo() may broadcast potential security issues.
    phpinfo();
    return '';
}

ציון יחסי תלות

‫PHP משתמש ב-Composer כדי לנהל יחסי תלות. כדי לציין יחסי תלות לפונקציה, מוסיפים את יחסי התלות לקובץ פרויקט שנקרא composer.json.

בזמן הריצה של PHP ב-Cloud Run Functions, צריך להגדיר את Functions Framework כתלות מפורשת. כדי להוסיף את Functions Framework כתלות, מריצים את הפקודה הבאה בספרייה שמכילה את קוד הפונקציה (הספרייה הזו צריכה להכיל גם את הקובץ composer.json):

composer require google/cloud-functions-framework

הפעולה הזו מוסיפה את Functions Framework ל-composer.json ומתקינה את החבילה בספרייה vendor/.

קובץ autoload.php

אחד מהקבצים שנמצאים בספרייה vendor/ הוא autoload.php.

מוסיפים את השורה הבאה לחלק העליון של סקריפטים של PHP כדי לדרוש את הקובץ autoload.php, שבאופן אוטומטי require את התלות האחרת של הפונקציה:

require_once __DIR__ . '/vendor/autoload.php';

כברירת מחדל, המערכת מתעלמת מהספרייה vendor/ בקובץ .gcloudignore שנוצר, כדי לצמצם את מספר הקבצים שנשלחים בפריסה.