-
-
Notifications
You must be signed in to change notification settings - Fork 250
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: add FR translations and various EN improvements (#589)
* feat: add fr doc (#1) * fix: fr translations * fix: linter * docs: various improvements * fix: md links on readme fr * fix: remove duplicate images --------- Co-authored-by: Kévin Dunglas <[email protected]>
- Loading branch information
Showing
25 changed files
with
1,412 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
# Contribuer | ||
|
||
## Compiler PHP | ||
|
||
### Avec Docker (Linux) | ||
|
||
Construisez l'image Docker de développement : | ||
|
||
```console | ||
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 | ||
``` | ||
|
||
L'image contient les outils de développement habituels (Go, GDB, Valgrind, Neovim...). | ||
|
||
Si la version de Docker est inférieure à 23.0, la construction échoue à cause d'un [problème de pattern](https://github.com/moby/moby/pull/42676) dans `.dockerignore`. Ajoutez les répertoires à `.dockerignore`. | ||
|
||
```patch | ||
!testdata/*.php | ||
!testdata/*.txt | ||
+!caddy | ||
+!C-Thread-Pool | ||
+!internal | ||
``` | ||
|
||
### Sans Docker (Linux et macOS) | ||
|
||
[Suivez les instructions pour compiler à partir des sources](compile.md) et passez l'indicateur de configuration `--debug`. | ||
|
||
## Exécution de la suite de tests | ||
|
||
```console | ||
go test -race -v ./... | ||
``` | ||
|
||
## Module Caddy | ||
|
||
Construire Caddy avec le module FrankenPHP : | ||
|
||
```console | ||
cd caddy/frankenphp/ | ||
go build | ||
cd ../../ | ||
``` | ||
|
||
Exécuter Caddy avec le module FrankenPHP : | ||
|
||
```console | ||
cd testdata/ | ||
../caddy/frankenphp/frankenphp run | ||
``` | ||
|
||
Le serveur est configuré pour écouter à l'adresse `127.0.0.1:8080`: | ||
|
||
```console | ||
curl -vk https://localhost/phpinfo.php | ||
``` | ||
|
||
## Serveur de test minimal | ||
|
||
Construire le serveur de test minimal : | ||
|
||
```console | ||
cd internal/testserver/ | ||
go build | ||
cd ../../ | ||
``` | ||
|
||
Lancer le test serveur : | ||
|
||
```console | ||
cd testdata/ | ||
../internal/testserver/testserver | ||
``` | ||
|
||
Le serveur est configuré pour écouter à l'adresse `127.0.0.1:8080`: | ||
|
||
```console | ||
curl -v http://127.0.0.1:8080/phpinfo.php | ||
``` | ||
|
||
## Construire localement les images Docker | ||
|
||
Afficher le plan de compilation : | ||
|
||
```console | ||
docker buildx bake -f docker-bake.hcl --print | ||
``` | ||
|
||
Construire localement les images FrankenPHP pour amd64 : | ||
|
||
```console | ||
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/amd64" | ||
``` | ||
|
||
Construire localement les images FrankenPHP pour arm64 : | ||
|
||
```console | ||
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/arm64" | ||
``` | ||
|
||
Construire à partir de zéro les images FrankenPHP pour arm64 & amd64 et les pousser sur Docker Hub : | ||
|
||
```console | ||
docker buildx bake -f docker-bake.hcl --pull --no-cache --push | ||
``` | ||
|
||
## Déboguer les erreurs de segmentation dans GitHub Actions | ||
|
||
1. Ouvrir `.github/workflows/tests.yml` | ||
2. Activer les symboles de débogage de la bibliothèque PHP | ||
|
||
```patch | ||
- uses: shivammathur/setup-php@v2 | ||
# ... | ||
env: | ||
phpts: ts | ||
+ debug: true | ||
``` | ||
|
||
3. Activer `tmate` pour se connecter au conteneur | ||
|
||
```patch | ||
- | ||
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 | ||
``` | ||
|
||
4. Se connecter au conteneur | ||
5. Ouvrir `frankenphp.go` | ||
6. Activer `cgosymbolizer` | ||
|
||
```patch | ||
- //_ "github.com/ianlancetaylor/cgosymbolizer" | ||
+ _ "github.com/ianlancetaylor/cgosymbolizer" | ||
``` | ||
|
||
7. Télécharger le module : `go get` | ||
8. Dans le conteneur, vous pouvez utiliser GDB et similaires : | ||
|
||
```console | ||
go test -c -ldflags=-w | ||
gdb --args ./frankenphp.test -test.run ^MyTest$ | ||
``` | ||
|
||
9. Quand le bug est corrigé, annulez tous les changements | ||
|
||
## Ressources Diverses pour le Développement | ||
|
||
* [Intégration de PHP dans uWSGI](https://github.com/unbit/uwsgi/blob/master/plugins/php/php_plugin.c) | ||
* [Intégration de PHP dans NGINX Unit](https://github.com/nginx/unit/blob/master/src/nxt_php_sapi.c) | ||
* [Intégration de PHP dans Go (go-php)](https://github.com/deuill/go-php) | ||
* [Intégration de PHP dans Go (GoEmPHP)](https://github.com/mikespook/goemphp) | ||
* [Intégration de PHP dans C++](https://gist.github.com/paresy/3cbd4c6a469511ac7479aa0e7c42fea7) | ||
* [Extending and Embedding PHP par Sara Golemon](https://books.google.fr/books?id=zMbGvK17_tYC&pg=PA254&lpg=PA254#v=onepage&q&f=false) | ||
* [Qu'est-ce que TSRMLS_CC, au juste ?](http://blog.golemon.com/2006/06/what-heck-is-tsrmlscc-anyway.html) | ||
* [Intégration de PHP sur Mac](https://gist.github.com/jonnywang/61427ffc0e8dde74fff40f479d147db4) | ||
* [Bindings SDL](https://pkg.go.dev/github.com/veandco/[email protected]/sdl#Main) | ||
|
||
## Ressources Liées à Docker | ||
|
||
* [Définition du fichier Bake](https://docs.docker.com/build/customize/bake/file-definition/) | ||
* [docker buildx build](https://docs.docker.com/engine/reference/commandline/buildx_build/) | ||
|
||
## Commande utile | ||
|
||
```console | ||
apk add strace util-linux gdb | ||
strace -e 'trace=!futex,epoll_ctl,epoll_pwait,tgkill,rt_sigreturn' -p 1 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
# FrankenPHP : le serveur d'applications PHP moderne, écrit en Go | ||
|
||
<h1 align="center"><a href="https://frankenphp.dev"><img src="../../frankenphp.png" alt="FrankenPHP" width="600"></a></h1> | ||
|
||
FrankenPHP est un serveur d'applications moderne pour PHP construit à partir du serveur web [Caddy](https://caddyserver.com/). | ||
|
||
FrankenPHP donne des super-pouvoirs à vos applications PHP grâce à ses fonctionnalités à la pointe : [*Early Hints*](early-hints.md), [mode worker](worker.md), [fonctionnalités en temps réel](mercure.md), HTTPS automatique, prise en charge de HTTP/2 et HTTP/3... | ||
|
||
FrankenPHP fonctionne avec n'importe quelle application PHP et rend vos projets Laravel et Symfony plus rapides que jamais grâce à leurs intégrations officielles avec le mode worker. | ||
|
||
FrankenPHP peut également être utilisé comme une bibliothèque Go autonome qui permet d'intégrer PHP dans n'importe quelle application en utilisant `net/http`. | ||
|
||
Découvrez plus de détails sur ce serveur d’application dans le replay de cette conférence donnée au Forum PHP 2022 : | ||
|
||
<a href="https://dunglas.dev/2022/10/frankenphp-the-modern-php-app-server-written-in-go/"><img src="https://dunglas.dev/wp-content/uploads/2022/10/frankenphp.png" alt="Diapositives" width="600"></a> | ||
|
||
## Pour Commencer | ||
|
||
### Docker | ||
|
||
```console | ||
docker run -v $PWD:/app/public \ | ||
-p 80:80 -p 443:443 -p 443:443/udp \ | ||
dunglas/frankenphp | ||
``` | ||
|
||
Rendez-vous sur `https://localhost`, c'est parti ! | ||
|
||
> [!TIP] | ||
> | ||
> Ne tentez pas d'utiliser `https://127.0.0.1`. Utilisez localhost et acceptez le certificat auto-signé. | ||
> Utilisez [la variable d'environnement `SERVER_NAME`](config.md#environment-variables) pour changer le domaine à utiliser. | ||
### Binaire autonome | ||
|
||
Si vous préférez ne pas utiliser Docker, nous fournissons des binaires autonomes de FrankenPHP pour Linux et macOS | ||
contenant [PHP 8.3](https://www.php.net/releases/8.3/fr.php) et la plupart des extensions PHP populaires : [Télécharger FrankenPHP](https://github.com/dunglas/frankenphp/releases) | ||
|
||
Pour servir le contenu du répertoire courant, exécutez : | ||
|
||
```console | ||
./frankenphp php-server | ||
``` | ||
|
||
Vous pouvez également exécuter des scripts en ligne de commande avec : | ||
|
||
```console | ||
./frankenphp php-cli /path/to/your/script.php | ||
``` | ||
|
||
## Documentation | ||
|
||
* [Le mode worker](worker.md) | ||
* [Le support des Early Hints (code de statut HTTP 103)](early-hints.md) | ||
* [Temps réel](mercure.md) | ||
* [Configuration](config.md) | ||
* [Images Docker](docker.md) | ||
* [Déploiement en production](production.md) | ||
* [Créer des applications PHP **standalone**, auto-exécutables](embed.md) | ||
* [Créer un build statique](static.md) | ||
* [Compiler depuis les sources](compile.md) | ||
* [Intégration Laravel](laravel.md) | ||
* [Problèmes connus](known-issues.md) | ||
* [Application de démo (Symfony) et benchmarks](https://github.com/dunglas/frankenphp-demo) | ||
* [Documentation de la bibliothèque Go](https://pkg.go.dev/github.com/dunglas/frankenphp) | ||
* [Contribuer et débugger](CONTRIBUTING.md) | ||
|
||
## Exemples et squelettes | ||
|
||
* [Symfony](https://github.com/dunglas/symfony-docker) | ||
* [API Platform](https://api-platform.com/docs/distribution/) | ||
* [Laravel](laravel.md) | ||
* [Sulu](https://sulu.io/blog/running-sulu-with-frankenphp) | ||
* [WordPress](https://github.com/dunglas/frankenphp-wordpress) | ||
* [Drupal](https://github.com/dunglas/frankenphp-drupal) | ||
* [Joomla](https://github.com/alexandreelise/frankenphp-joomla) | ||
* [TYPO3](https://github.com/ochorocho/franken-typo3) |
Oops, something went wrong.