Bu sayfa topluluk tarafından çevrilmiştir ve güncel olmayabilir. Referans versiyonuna (İngilizce) bakın.
Bu sayfa topluluk tarafından çevrilmiştir ve güncel olmayabilir. Referans versiyonuna (İngilizce) bakın.
Bu sayfa topluluk tarafından çevrilmiştir ve güncel olmayabilir. Referans versiyonuna (İngilizce) bakın.
Geliştirme Ortamı için Docker İmajını Oluşturun:
docker build -t frankenphp-dev -f dev.Dockerfile .
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 8080:8080 -p 443:443 -p 443:443/udp -v $PWD:/go/src/app -it frankenphp-dev
İmaj genel geliştirme araçlarını (Go, GDB, Valgrind, Neovim…) içerir.
Docker sürümü 23.0’dan düşükse, derleme dockerignore pattern issue tarafından başarısız olur. Dizinleri .dockerignore
dosyasına ekleyin.
!testdata/*.php
!testdata/*.txt
+!caddy
+!internal
Kaynaklardan derlemek için talimatları izleyin ve --debug
yapılandırma seçeneğini geçirin.
go test -tags watcher -race -v ./...
FrankenPHP Caddy modülü ile Caddy’yi oluşturun:
cd caddy/frankenphp/
go build
cd ../../
Caddy’yi FrankenPHP Caddy modülü ile çalıştırın:
cd testdata/
../caddy/frankenphp/frankenphp run
Sunucu 127.0.0.1:8080
adresini dinliyor:
curl -vk https://localhost/phpinfo.php
Minimal test sunucusunu oluşturun:
cd internal/testserver/
go build
cd ../../
Test sunucusunu çalıştırın:
cd testdata/
../internal/testserver/testserver
Sunucu 127.0.0.1:8080
adresini dinliyor:
curl -v http://127.0.0.1:8080/phpinfo.php
Bake (pişirme) planını yazdırın:
docker buildx bake -f docker-bake.hcl --print
Yerel olarak amd64 için FrankenPHP görüntüleri oluşturun:
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/amd64"
Yerel olarak arm64 için FrankenPHP görüntüleri oluşturun:
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/arm64"
FrankenPHP imajlarını arm64 ve amd64 için sıfırdan oluşturun ve Docker Hub’a gönderin:
docker buildx bake -f docker-bake.hcl --pull --no-cache --push
FrankenPHP binary dosyasının hata ayıklama sürümünü GitHub’dan indirin veya hata ayıklama seçeneklerini kullanarak özel statik derlemenizi oluşturun:
docker buildx bake \
--load \
--set static-builder.args.DEBUG_SYMBOLS=1 \
--set "static-builder.platform=linux/amd64" \
static-builder
docker cp $(docker create --name static-builder dunglas/frankenphp:static-builder):/go/src/app/dist/frankenphp-linux-$(uname -m) frankenphp
Mevcut frankenphp
sürümünüzü hata ayıklama FrankenPHP çalıştırılabilir dosyasıyla değiştirin
FrankenPHP’yi her zamanki gibi başlatın (alternatif olarak FrankenPHP’yi doğrudan GDB ile başlatabilirsiniz: gdb --args frankenphp run
)
GDB ile sürece bağlanın:
gdb -p `pidof frankenphp`
Gerekirse, GDB kabuğuna continue
yazın
FrankenPHP’nin çökmesini sağlayın
GDB kabuğuna bt
yazın
Çıktıyı kopyalayın
.github/workflows/tests.yml
dosyasını açın
PHP hata ayıklama seçeneklerini etkinleştirin
- uses: shivammathur/setup-php@v2
# ...
env:
phpts: ts
+ debug: true
Konteynere bağlanmak için tmate
i etkinleştirin
-
name: Set CGO flags
run: echo "CGO_CFLAGS=$(php-config --includes)" >> "$GITHUB_ENV"
+ -
+ run: |
+ sudo apt install gdb
+ mkdir -p /home/runner/.config/gdb/
+ printf "set auto-load safe-path /\nhandle SIG34 nostop noprint pass" > /home/runner/.config/gdb/gdbinit
+ -
+ uses: mxschmitt/action-tmate@v3
Konteynere bağlanın
frankenphp.go
dosyasını açın
cgosymbolizer
‘ı etkinleştirin
- //_ "github.com/ianlancetaylor/cgosymbolizer"
+ _ "github.com/ianlancetaylor/cgosymbolizer"
Modülü indirin: go get
Konteynerde GDB ve benzerlerini kullanabilirsiniz:
go test -tags watcher -c -ldflags=-w
gdb --args frankenphp.test -test.run ^MyTest$
Hata düzeltildiğinde, tüm bu değişiklikleri geri alın
apk add strace util-linux gdb
strace -e 'trace=!futex,epoll_ctl,epoll_pwait,tgkill,rt_sigreturn' -p 1