Tarafından desteklenmektedir
Statik Yapı Oluşturun

Statik Yapı Oluşturun

PHP kütüphanesinin yerel kurulumunu kullanmak yerine, harika static-php-cli projesi sayesinde FrankenPHP’nin statik bir yapısını oluşturmak mümkündür (adına rağmen, bu proje sadece CLI’yi değil, tüm SAPI’leri destekler).

Bu yöntemle, tek, taşınabilir bir ikili PHP yorumlayıcısını, Caddy web sunucusunu ve FrankenPHP’yi içerecektir!

FrankenPHP ayrıca PHP uygulamasının statik binary gömülmesini destekler.

# Linux

Linux statik binary dosyası oluşturmak için bir Docker imajı sağlıyoruz:

docker buildx bake --load static-builder
docker cp $(docker create --name static-builder dunglas/frankenphp:static-builder):/go/src/app/dist/frankenphp-linux-$(uname -m) frankenphp ; docker rm static-builder

Elde edilen statik binary frankenphp olarak adlandırılır ve geçerli dizinde kullanılabilir.

Statik binary dosyasını Docker olmadan oluşturmak istiyorsanız, Linux için de çalışan macOS talimatlarına bir göz atın.

# Özel Eklentiler

Varsayılan olarak, en popüler PHP eklentileri zaten derlenir.

Binary dosyanın boyutunu küçültmek ve saldırı yüzeyini azaltmak için PHP_EXTENSIONS Docker ARG’sini kullanarak derlenecek eklentilerin listesini seçebilirsiniz.

Örneğin, yalnızca opcache eklentisini derlemek için aşağıdaki komutu çalıştırın:

docker buildx bake --load --set static-builder.args.PHP_EXTENSIONS=opcache,pdo_sqlite static-builder
# ...

Etkinleştirdiğiniz eklentilere ek işlevler sağlayan kütüphaneler eklemek için PHP_EXTENSION_LIBS Docker ARG’sini kullanabilirsiniz:

docker buildx bake \
  --load \
  --set static-builder.args.PHP_EXTENSIONS=gd \
  --set static-builder.args.PHP_EXTENSION_LIBS=libjpeg,libwebp \
  static-builder

Derlemeyi nasıl özelleştireceğinize de bakın.

# GitHub Token

GitHub API kullanım limitine ulaşırsanız, GITHUB_TOKEN adlı bir ortam değişkeninde bir GitHub Personal Access Token ayarlayın:

GITHUB_TOKEN="xxx" docker --load buildx bake static-builder
# ...

# macOS

macOS için statik bir binary oluşturmak için aşağıdaki betiği çalıştırın (Homebrew yüklü olmalıdır):

git clone https://github.com/dunglas/frankenphp
cd frankenphp
./build-static.sh

Not: Bu betik Linux’ta (ve muhtemelen diğer Unix’lerde) da çalışır ve sağladığımız Docker tabanlı statik derleyici tarafından dahili olarak kullanılır.

# Yapıyı Özelleştirme

Aşağıdaki ortam değişkenleri docker build ve build-static.sh dosyalarına aktarılabilir statik derlemeyi özelleştirmek için betik:

  • FRANKENPHP_VERSION: kullanılacak FrankenPHP sürümü
  • PHP_VERSION: kullanılacak PHP sürümü
  • PHP_EXTENSIONS: oluşturulacak PHP eklentileri (desteklenen eklentiler listesi)
  • PHP_EXTENSION_LIBS: eklentilere özellikler ekleyen oluşturulacak ekstra kütüphaneler
  • EMBED: binary dosyaya gömülecek PHP uygulamasının yolu
  • CLEAN: ayarlandığında, libphp ve tüm bağımlılıkları sıfırdan oluşturulur (önbellek yok)
  • DEBUG_SYMBOLS: ayarlandığında, hata ayıklama sembolleri ayıklanmayacak ve binary dosyaya eklenecektir
  • RELEASE: (yalnızca bakımcılar) ayarlandığında, ortaya çıkan binary dosya GitHub’a yüklenecektir
Bu sayfayı düzenleyin