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 menampilkanCurlLiteMethodNotSupportedException
.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 pernyataaninclude
ataurequire
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
danbucket_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 darigs://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.