File php.ini

Anda dapat menyertakan file php.ini dengan aplikasi App Engine. File ini memungkinkan Anda menyesuaikan perilaku perintah penafsir PHP.

Tentang php.ini

File php.ini harus ditempatkan di direktori dasar aplikasi (direktori yang sama dengan file app.yaml). File ini dimuat saat penafsir PHP diinisialisasi, dan sebelum kode aplikasi Anda dijalankan.

File ini mengikuti sintaksis yang sama dengan file .ini lainnya. Berikut contoh sederhananya:

; This is a simple php.ini file on App Engine
;
; This is a directive set to "On"
widget_compression = "On"

Daftar perintah inti, beserta nilai modenya yang dapat diubah, dipublikasikan di php.net. Perintah php.ini yang ditangani oleh ekstensi didokumentasikan di halaman dari ekstensi itu sendiri.

Anda dapat mengganti perintah PHP yang memiliki salah satu nilai mode yang dapat diubah berikut:

  • PHP_INI_SYSTEM
  • PHP_INI_ALL
  • PHP_INI_PERDIR

Perhatikan bahwa beberapa fungsi telah dinonaktifkan dalam implementasi PHP App Engine. Perintah yang menargetkan fungsi ini tidak akan berpengaruh.

Serangkaian ekstensi yang dapat dimuat secara dinamis dapat diaktifkan menggunakan perintah extension.

Perintah PHP untuk App Engine

Perintah berikut dikhususkan untuk lingkungan App Engine. Perintah tersebut dapat dimasukkan dalam file php.ini.

  • google_app_engine.enable_curl_lite - Mengaktifkan "cURL lite", versi cURL bawaan khusus App Engine, saat ditetapkan ke "1". "cURL lite" dapat digunakan seperti halnya Anda menggunakan fungsi cURL standar, tetapi fungsi ini memanggil URL Fetch di latar belakang alih-alih soket, sehingga fungsi tanpa URL Fetch yang setara akan menampilkan CurlLiteMethodNotSupportedException.

    Catatan: Aplikasi tidak dapat mengaktifkan ekstensi "curl.so" dan "cURL lite" secara bersamaan, karena hal ini membebani fungsi cURL.

  • google_app_engine.enable_functions - Fungsi yang telah dinonaktifkan sementara di App Engine, tetapi dapat diaktifkan kembali menggunakan perintah ini. Cantumkan nama fungsi dalam string yang dipisahkan koma:
    google_app_engine.enable_functions = "phpversion, phpinfo"
  • google_app_engine.allow_include_gs_buckets - Mengizinkan aplikasi Anda menggunakan pernyataan include atau require dengan file yang disimpan di Google Cloud Storage.

    Catatan: Anda dapat menggunakan #default# untuk bucket default. Nilai ini akan otomatis diganti pada saat runtime dengan nama bucket default Anda saat ini.

    Misalnya, cantumkan bucket default, beserta bucket bucket_1 dan bucket_2 yang berisi file dalam string yang dipisahkan koma:

    google_app_engine.allow_include_gs_buckets = "#default#, bucket_1, bucket_2"

    Anda juga dapat menentukan bucket dan jalur ke file yang dapat disertakan, misalnya:

    google_app_engine.allow_include_gs_buckets = "bucket_1/path_x"

    Saat pemeriksaan dilakukan untuk file yang dapat disertakan dari Google Cloud Storage, jalur yang diberikan diperlakukan sebagai awalan yang harus cocok dengan awal nama file agar dapat disertakan atau diwajibkan. Misalnya, menggunakan contoh jalur di atas, jalur yang diberikan akan memungkinkan pengguna menyertakan file dari gs://bucket_1/path_x/... karena awalannya cocok, tetapi bukan dari gs://bucket_1 or gs://bucket_1/path_y/ karena awalannya tidak cocok.

    Jika file yang diupload dipindahkan ke bucket penyertaan yang diizinkan, peringatan akan dikeluarkan untuk memberi tahu pengguna tentang potensi serangan LFI. Jika hal ini terjadi, sebaiknya gunakan jalur yang lebih ketat.

    Catatan: jalur diperlakukan sebagai awalan file, sehingga dapat berisi file tertentu, misalnya, google_app_engine.allow_include_gs_buckets = "bucket_1/path_x.ext", "bucket_2/path_z/some_file.ext.

  • google_app_engine.disable_readonly_filesystem - Secara default, aplikasi PHP tidak diizinkan untuk menulis ke sistem file. Menyetel perintah ini ke "1" akan mencabut pembatasan lingkungan pengembangan lokal. Namun, setelan ini tidak berlaku untuk aplikasi yang berjalan dalam lingkungan production, yang selalu tunduk pada pembatasan sandbox.