Commit Graph

936 Commits

Author SHA1 Message Date
Kévin Dunglas
bf5c98410b chore: log thread (#1589) 2025-05-20 10:10:46 +02:00
Kévin Dunglas
cf7541fde6 chore: add more logs for the worker 2025-05-19 22:43:54 +02:00
dependabot[bot]
25491068df ci: bump super-linter/super-linter in the github-actions group
Bumps the github-actions group with 1 update: [super-linter/super-linter](https://github.com/super-linter/super-linter).


Updates `super-linter/super-linter` from 7.3.0 to 7.4.0
- [Release notes](https://github.com/super-linter/super-linter/releases)
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md)
- [Commits](https://github.com/super-linter/super-linter/compare/v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: super-linter/super-linter
  dependency-version: 7.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 13:49:56 +02:00
Kévin Dunglas
d72751b9fd ci: always login to the Docker Hub to mitigate rate limiting issues 2025-05-19 13:46:55 +02:00
Kévin Dunglas
8820e53819 ci: fix typo in dev Dockerfile 2025-05-16 12:00:04 +02:00
Kévin Dunglas
d2b6f9e723 chore: prepare release 1.6.0 caddy/v1.6.0 v1.6.0 2025-05-16 10:16:35 +02:00
Kévin Dunglas
13fbe126ea fix: automatically change cwd when embedding an app 2025-05-16 10:10:01 +02:00
Kévin Dunglas
afa7dafe1c chore: bump deps 2025-05-16 09:22:00 +02:00
Marc
39e22bd5e0 fix: use sudo to build packages (#1568) 2025-05-15 23:12:38 +02:00
Marc
bbbfdb31b5 ci: build .rpm and .deb packages (#1497)
* add ./create-rpm.sh file to build a "frankenphp" rpm package

* also build a deb package

* renamed to build-packages

* linter...

* add depends

* linter again?

* linter number 3

* linter number 4

* set default locations for ini file, conf files and extensions

* set unified path for modules that should be ok on all dists

* add default content into "package" folder

* make file executable

* worker is in public folder

* what on earth did I do x)

* use same FRANKENPHP_VERSION and make sure to let pr's run the rpm generation too (version 0.0.0) to see issues

* install ruby, fpm and rpm-build

* move to after changing base urls because it would fail with packages not found

* ruby 3 build needs gcc 10

* rpm-build is necessary too...

* and I forgot to link the package folder

* create directories if they don't exist

* copy out all frankenphp* files?

* lint fix

* only copy frankenphp-* files

* only copy frankenphp-* files

* the .deb file is name frankenphp_1.5.0... - create output folder instead and upload all things inside that
will simplify things when later adding xdebug.so and ffi.so

* update the last two steps to use the gh-output directory

* add post install script to set frankenphp able to bind to port 80 for non-root users

* dnf over yum, I think the yum alias was removed in RH 9.5

* newlines

* newlines

* add text what missing libcap means

* copy php.ini-production from php-src, linter, update ruby version

* move Caddyfile to /etc/frankenphp/Caddyfile

* linter

* fix a copy and paste error

* better describe fallback to 0.0.0

* linter

* copy installation scripts from official caddy packages, change user to frankenphp too

* bombombom

* make files executable

* tabs

* linter

* linter again

* use empty directory for three different destinations instead of keeping three empty local directories

* caddy says the file is incorrectly formatted without these spaces

* remove wildcard matcher from root directive

* Apply suggestions from code review

commit suggested changes to preinstall/postinstall scripts

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update dev.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* remove misleading comment

* update documentation for paths

* update documentation for paths some more

* fix musl opcache-jit issue

* markdown linter

* the damn tab

* Apply suggestions from code review

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* drop dev.Dockerfile php location from config.md

* add php config note to CONTRIBUTING.md

* dashes instead of asterisks in chinese docs

* fix package building

* create frankenphp user in case it doesn't exist for deb packages

* create users if they don't exist, delete them again if they didn't exist

* satisfy linter

* create the user with the same commands as the postinst/preinstall scripts

* Removes toolchain requirements.

* trigger

* Removes explicit calls to go get

* trigger

* setcap by default

* simplify example project

* bring page more in line with the caddy / apache / nginx default page

* update to html 5

* oopsies

* revert style to original

* remove https:// (caddy uses http:// on RHEL, :80 on Debian)

---------

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
2025-05-14 07:33:05 +02:00
Alexander Stecher
0b83602575 fix: makes response writer error a debug message. (#1549)
* Makes response writer error a debug message.

* trigger

* log at warn level

* Update frankenphp.go

---------

Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2025-05-13 17:34:10 +02:00
Kévin Dunglas
ecca9dc01d ci: use latest stable Go version for the mostly static binary (#1558)
* ci: use latest stable Go version for the mostly static binary

* fix
2025-05-13 16:10:02 +02:00
Kévin Dunglas
eb40c03a21 chore: use strings.ContainsAny() for needReplacement() 2025-05-13 10:27:35 +02:00
Alexander Stecher
c2390e7c3b fix: php-cli flag parsing conflicts (#1559)
* Fixes flag parsing.

* trigger

* trigger

* Fixes flag parsing.

---------

Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
2025-05-13 10:24:59 +02:00
Kévin Dunglas
0d12a5162d fix: use local Go toolchain (#1546) 2025-05-11 22:30:19 +02:00
Alexander Stecher
a48db9422d fix: go toolchain versioning (#1545)
* Removes toolchain requirements.

* trigger

* Removes explicit calls to go get

* trigger

* Update static-builder-musl.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update static-builder-musl.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update static-builder-gnu.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update alpine.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update alpine.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* trigger

* trigger

---------

Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2025-05-11 09:18:45 +02:00
Alexander Stecher
ab0fcd80de Fixes metrics also with regular request timeouts. (#1550) 2025-05-10 14:31:58 +02:00
Tolsee
2f7b987198 feat: dequeue worker request on timeout (#1540) 2025-05-09 18:01:49 +02:00
Marc
1d74b2caa8 feat: define domain specific workers in php_server and php blocks (#1509)
* add module (php_server directive) based workers

* refactor moduleID to uintptr for faster comparisons

* let workers inherit environment variables and root from php_server

* caddy can shift FrankenPHPModules in memory for some godforsaken reason, can't rely on them staying the same

* remove debugging statement

* fix tests

* refactor moduleID to uint64 for faster comparisons

* actually allow multiple workers per script filename

* remove logging

* utility function

* reuse existing worker with same filename and environment when calling newWorker with a filepath that already has a suitable worker, simply add number of threads

* no cleanup happens between tests, so restore old global worker overwriting logic

* add test, use getWorker(ForContext) function in frankenphp.go as well

* bring error on second global worker with the same filename again

* refactor to using name instead of moduleID

* nicer name

* nicer name

* add more tests

* remove test case already covered by previous test

* revert back to single variable, moduleIDs no longer relevant

* update comment

* figure out the worker to use in FrankenPHPModule::ServeHTTP

* add caddy/config_tests, add --retry 5 to download

* add caddy/config_tests

* sum up logic a bit, put worker thread addition into moduleWorkers parsing, before workers are actually created

* implement suggestions as far as possible

* fixup

* remove tags

* feat: download the mostly static binary when possible (#1467)

* feat: download the mostly static binary when possible

* cs

* docs: remove wildcard matcher from root directive (#1513)

* docs: update README with additional documentation links

Add link to classic mode, efficiently serving large static files and monitoring FrankenPHP

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* ci: combine dependabot updates for one group to 1 pull-request

* feat: compatibility with libphp.dylib on macOS

* feat: upgrade to Caddy 2.10

* feat: upgrade to Caddy 2.10

* chore: run prettier

* fix: build-static.sh consecutive builds (#1496)

* fix consecutive builds

* use minor version in PHP_VERSION

* install jq in centos container

* fix "arm64" download arch for spc binary

* jq is not available as a rpm download

* linter

* specify php 8.4 default

specify 8.4 so we manually switch to 8.5 when we make sure it works
allows to run without jq installed

* Apply suggestions from code review

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

---------

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* chore: update Go and toolchain version (#1526)

* apply suggestions one be one - scriptpath only

* generate unique worker names by filename and number

* support worker config from embedded apps

* rename back to make sure we don't accidentally add FrankenPHPApp workers to the slice

* fix test after changing error message

* use 🧩 for module workers

* use 🌍 for global workers :)

* revert 1c414cebbc

* revert 4cc8893ced

* apply suggestions

* add dynamic config loading test of module worker

* fix test

* minor changes

---------

Signed-off-by: Romain Bastide <romain.bastide@orange.com>
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
Co-authored-by: Indra Gunawan <hello@indra.my.id>
Co-authored-by: Romain Bastide <romain.bastide@orange.com>
2025-05-05 16:14:19 +02:00
Kévin Dunglas
92e92335e3 docs: fix warning markup 2025-05-05 15:12:04 +02:00
dependabot[bot]
8f5f9e4c8b ci: bump golangci/golangci-lint-action in the github-actions group
Bumps the github-actions group with 1 update: [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action).


Updates `golangci/golangci-lint-action` from 7 to 8
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v7...v8)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 14:28:35 +02:00
Kévin Dunglas
5b7fc5ec52 chore: make the linter happy (#1537) 2025-05-02 11:43:54 +02:00
Marc
05220de0e3 typo snuck into last pr (#1536) 2025-05-01 16:31:18 +02:00
Alexander Stecher
3741782330 feat: '-r' option for php-cli (#1482) 2025-05-01 02:06:31 +02:00
Indra Gunawan
a6e1d3554d fix negative frankenphp_ready_workers metrics (#1491) 2025-05-01 02:05:23 +02:00
Kévin Dunglas
6f1b4f3bae ci: fix GNU manifest (#1535) 2025-04-30 14:52:40 +02:00
Thomas Cochard
cd540bda11 Fix -d / --wait arguments (#1531) 2025-04-29 16:36:23 +02:00
Alexander Stecher
8125993001 fix: disallow 2 workers with same filename (#1492)
* Disallows 2 workers with the same filename.

* Adds test.

* Prevent duplicate names.

---------

Co-authored-by: a.stecher <a.stecher@sportradar.com>
Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
2025-04-29 10:18:24 +02:00
Kévin Dunglas
8583afd83e chore: add context to logs to make the linter happy (#1533) 2025-04-29 01:08:15 +02:00
Kévin Dunglas
d10a243f86 ci: fix GNU manifest (#1534) 2025-04-29 01:07:37 +02:00
Indra Gunawan
1ec37f6cc9 feat: replace zap with slog (#1527) 2025-04-26 11:04:46 +02:00
Kévin Dunglas
4ad5e870ec ci: fix static GNU binary copy (#1528) 2025-04-26 11:03:36 +02:00
Kévin Dunglas
49d2e62996 chore: bump Mercure and downgrade cbrotli (#1525)
* chore: bump Mercure

* downgrade cbrotli
2025-04-23 14:01:33 +02:00
Indra Gunawan
8febee71af chore: update Go and toolchain version (#1526) 2025-04-23 11:02:37 +02:00
Marc
16814581f9 fix: build-static.sh consecutive builds (#1496)
* fix consecutive builds

* use minor version in PHP_VERSION

* install jq in centos container

* fix "arm64" download arch for spc binary

* jq is not available as a rpm download

* linter

* specify php 8.4 default

specify 8.4 so we manually switch to 8.5 when we make sure it works
allows to run without jq installed

* Apply suggestions from code review

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

---------

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2025-04-23 09:44:02 +02:00
Kévin Dunglas
ffa52f7c8d chore: run prettier 2025-04-23 01:02:44 +02:00
Kévin Dunglas
4550027de4 feat: upgrade to Caddy 2.10 2025-04-22 17:34:11 +02:00
Kévin Dunglas
7f8e43fd62 feat: upgrade to Caddy 2.10 2025-04-22 16:15:11 +02:00
Kévin Dunglas
254c0a8a55 feat: compatibility with libphp.dylib on macOS 2025-04-22 16:07:07 +02:00
Indra Gunawan
22cf94d556 ci: combine dependabot updates for one group to 1 pull-request 2025-04-22 16:06:31 +02:00
Romain Bastide
a4dc93f831 docs: update README with additional documentation links
Add link to classic mode, efficiently serving large static files and monitoring FrankenPHP

Signed-off-by: Romain Bastide <romain.bastide@orange.com>
2025-04-22 16:05:06 +02:00
Indra Gunawan
c276a3f434 docs: remove wildcard matcher from root directive (#1513) 2025-04-22 11:27:29 +02:00
Kévin Dunglas
02a1c92b88 feat: download the mostly static binary when possible (#1467)
* feat: download the mostly static binary when possible

* cs
2025-04-18 14:22:58 +02:00
Kévin Dunglas
8092f4a35c chore!: update to golangci-lint-action 7 (#1508) 2025-04-17 20:33:22 +02:00
David Legrand
b250bd9a07 docs: add instructions to run Caddyfile from static binary (#1501) 2025-04-17 15:31:29 +02:00
Pierre du Plessis
99064ee3e1 fix: build-static.sh (#1474)
* Fixes build-static script

* Add composer to gnu image

* Fix syntax
2025-04-17 14:56:33 +02:00
Marc
58a728b790 docs: add configuration note about the ominous php directive (#1495)
* add note about the `php` directive in the configuration page

* Update config.md

* Update config.md

---------

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2025-04-17 14:54:58 +02:00
Marc
66aa975d47 fix: disable -march-native in case that lead to the illegal instruction in de265_init->init_scan_orders #1460 (#1493) 2025-04-15 15:29:51 +02:00
Kévin Dunglas
5e1ad5d797 docs: efficiently serving large static files (X-Sendfile/X-Accel-Redirect) (#896)
* docs: X-Sendfile/X-Accel-Redirect

* lint

* fix
2025-04-14 17:18:50 +02:00
Romain Bastide
96dd739064 docs: sync French docs with English (#1475)
* docs: update configuration options for frankenphp and add file watching details

* docs: add classic mode usage in french documentation

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: add French metrics documentation

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: improve formatting and clarity in configuration documentation

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: update contributing guide with build instructions and debugging tips

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: fix link formatting in classic mode documentation

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: enhance Docker documentation with tag pattern for FrankenPHP image and usage details

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: enhance embed documentation with PHP extensions customization

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: add static binary packaging steps

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: add troubleshooting for TLS/SSL issues with static binaries

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: add max_threads and try_files configuration details to performance documentation

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: update Docker run command syntax for clarity

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: add optional dependencies and build tags for Brotli and file watcher features

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: enhance static binary documentation with build instructions and performance tips

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: add file change watch and manual worker restart instructions to worker documentation

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: typo

* docs: remove english text in french doc

* docs: last missing translations for worker failures

* docs: typo

* docs: typo

* docs: fix lint errors

* docs: add max_wait_time configuration details and clarify thread scaling

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

* docs: add missing translations for thread pool and max_threads configuration

Signed-off-by: Romain Bastide <romain.bastide@orange.com>

---------

Signed-off-by: Romain Bastide <romain.bastide@orange.com>
2025-04-08 11:01:37 +02:00