Tetapkan arahan php.ini untuk setiap tapak
P粉283559033
2023-08-28 00:20:14
<p>Saya mempunyai berbilang tapak yang dijalankan pada Apache2 dan PHP pada Pelayan Ubuntu. Saya tahu bahawa PHP mempunyai fail php.ini yang membolehkan anda menetapkan nilai untuk <code>upload_max_filesize</code>, <code>max_file_uploads</code> Tetapi ini akan menggunakan satu nilai pada semua tapak. </p>
<p>Bagaimanakah saya boleh menetapkan arahan untuk setiap tapak? Contohnya: Saya ingin menetapkan <kod>muat naik_maks_fail</kod> daripada <kod>sitea.com</kod> ;/kod> </p>
<p>Begitu juga, saya mahu menetapkan <kod>session.name</code> Bagaimanakah ini boleh dicapai? Saya membaca bahawa terdapat sesuatu yang dipanggil <code>PHP_INI_USER</code>, <code>PHP_INI_PERDIR</code>, <code>PHP_INI_SYSTEM</code>, <code>PHP_INI>semuanya< Saya lakukan ia? </p>
Komen eksplisit oleh Mike 'Pomax' Kamermans tentang cara ini harus dilakukan. Walau bagaimanapun, dokumentasi manual PHP boleh agak membingungkan.
Dan beberapa penjelasan tentang jawapan lain:
Menggunakan fail penghurai PHP (seperti yang diterangkan dalam Lajos Arpad) menambahkan beberapa risiko keselamatan dan sekumpulan pengekodan, sintaks dan beberapa overhed pemprosesan yang benar-benar tidak perlu.
.htaccess
确实可以为某些 PHP 安装设置自定义 ini 指令,但如果您使用的是“FastCGI”或“CGI”(可能还有 suPHP) ) PHP 安装实际上会导致您的网站崩溃并出现 500 错误,因此请使用本地.user.ini
fail seperti yang diterangkan di sini. Bagaimana untuk mencari SAPI saya?Hanya gunakan
.htaccess
jika anda menjalankan PHP sebagai modul Apache (cth. mod_php). Bagaimana untuk mencari SAPI saya?PHP suPHP/FastCGI/CGI SAPI
Jadi, bagaimanakah hasrat anda harus dipenuhi?
1) Cari butiran Teras PHP.ini.
Baca fail PHP.ini versi PHP semasa.
Pada baris 180 (untuk PHP 8.1), ia sepatutnya kelihatan seperti ini:
Buat nota nilai, Saya syorkan menyesuaikannya (seperti yang ditunjukkan dalam contoh ini). Nilai ini ialah nama fail fail yang akan ditempatkan dalam setiap akaun unik pada pelayan yang memegang tetapan "tempatan" khusus akaun untuk fail PHP.ini global.
Fail biasanya bermula dengan
public_html
文件夹中,因此应以.
supaya ia disembunyikan secara lalai (lebih lanjut mengenai perkara ini kemudian). Jika fail ini tidak wujud, tetapan PHP teras akaun tidak akan diubah.2) Ingat/tetapkan nama fail dan buat peraturan baharu
Jadi anda kini tahu/telah menetapkan nama fail PHP tersuai anda kini menjana fail dalam akaun anda dan kemudian anda boleh menetapkan tetapan PHP.ini yang anda mahu sesuaikan secara individu untuk akaun ini.
Contohnya
akan mengandungi maklumat sampel berikut:
Maklumat ini dihuraikan oleh PHP dan mengatasi sebarang nilai yang sepadan dalam PHP.ini teras, tetapi hanya untuk akaun itu.
3) Sesuaikan untuk setiap akaun mengikut keperluan
Sebagai contoh, untuk fail ini pengguna php siteb.com anda ia akan kelihatan lebih seperti ini:
akan mengandungi maklumat sampel berikut:
Anda kemudian boleh menyemak sama ada tetapan akaun ini ditetapkan dengan betul dengan meneroka
phpinfo()
pada setiap akaun dan mencatat perbezaan setempat dan teras yang ditunjukkan.4) Uji dan sahkan
/public_html/
Fail user.ini teras dalam laluan mestilah semua fail yang diperlukan untuk setiap sub-fail/folder pada akaun tersebut untuk diproses (ini kadangkala bergantung pada persediaan pelayan LAMP tepat anda dan pengendali PHP anda).Seperti yang saya katakan, sebaik sahaja anda menyediakan fail ujian ini, anda harus menjalankan
phpinfo()
untuk menyemak sama ada nilainya dilaksanakan.Jika anda tidak mahu menggunakan
phpinfo()
那么您可以轻松使用[ini_get](https://www.php.net/manual/en/function .ini-get)
maka anda boleh dengan mudah menggunakan[ini_get](https://www.php.net/manual/en/function .ini-get)
untuk membuang data sensitif kepada log ralat dan bukannya penyemak imbas.5) Keselamatan
Failuser.ini biasanya berakhir dengan
.
字符开头,以将其隐藏在目录中,但这并不意味着浏览器代理无法访问它,因此最好添加几行添加到您的.htaccess
untuk menafikan akses kepada fail ini.Beberapa pemikiran akhir:
Nilai teras PHP.ini memang berubah dalam versi baharu PHP, jadi amalan terbaik adalah menggunakan fail .ini tempatan yang berbeza untuk versi PHP yang berbeza (
..account-php80.ini
, .account-php81.ini等)。请注意,每个php.ini
Teras semua perlu memanggil fail user.ini setempat masing-masing secara eksplisit, seperti yang diterangkan dalam langkah 1 di atasPrinsip di atas digariskan dalam manual PHP dan mesti diperhatikan:
Anda boleh menetapkan ini dalam
.htaccess
文件来设置 PHP 配置值 - 至少对于大多数设置:如果您查看 在配置指令文档中,对于标记为PHP_INI_PERDIR
或 PHP_INI_ALL 您可以使用 PHP php_value 或php_flag
命令在.htaccess
fail setiap tapak (atau malah setiap folder) menggunakan ="https://www.php.net/manual/en/configuration.changes.php" rel="nofollow noreferrer"> "Bagaimana untuk menukar tetapan konfigurasi" Dokumentasi.Sebagai contoh, untuk menyediakan
upload_max_filesize
,请在该网站的文档根目录中创建一个.htaccess
fail dalam tapak web anda dan meletakkan teks di dalamnya:Malangnya, menukarnya dalam
max_file_uploads
和upload_tmp_dir
是标记为PHP_INI_SYSTEM
的设置,您无法在.htaccess
fail...