Conversation
Modernizes PHProxy to run on PHP 8.5 and ships a first-class Docker install option. Closes the PHP-8 issue bucket (#25, #32, #38, #43, #46). PHP 8.5 fixes: - Drop removed get_magic_quotes_gpc(); set stripslashes flag to false - Replace $_iflags{$i} / $dir{$i} curly-brace string offsets with [] - Replace each($_auth_creds) with array_key_first()-based lookup - Guard $_COOKIE['userAgent'] with isset() - Cast trim() inputs for HTTP_REFERER, response headers, cookie domain - ?string nullable params (8.4 deprecation, 8.5 error-on-deprecate) - intdiv() in Punycode loop (no more float-to-int deprecations) - Drop E_STRICT (removed in 8.4) Modernization (from PR #47): - Type hints across files/php/functions.inc.php - Short [] array syntax throughout Docker (new): - Dockerfile based on php:8.5-apache, mod_rewrite enabled - docker-compose.yml with dev bind-mount and a prod-mode note - .dockerignore CI (new): - .github/workflows/lint.yml runs php -l on every *.php in php:8.1-cli and php:8.5-cli containers README: - Docker quickstart added above standalone install - PHP requirement bumped to >= 8.1, tested on 8.5 - Modern-site limitation documented (CF/JS-gated sites won't work) Co-Authored-By: Roland Häder (Quix0r) <Quix0r@users.noreply.github.com> Co-Authored-By: dacendo <dacendo@users.noreply.github.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 27, 2026
Closed
Closed
Closed
Closed
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings PHProxy back to life on modern PHP (8.5) and ships a first-class Docker install option. Built on top of the open PHP-8 PRs from the community.
What changed
PHP 8.5 compatibility
get_magic_quotes_gpc()removed → setstripslashesflag tofalse$_iflags{$i},$dir{$i}) →[]each($_auth_creds)removed →array_key_first()-based lookup$_COOKIE['userAgent']access guarded withisset()trim()inputs cast to(string)forHTTP_REFERER, response headers, cookie-domain parsing?stringnullable params (PHP 8.4 deprecation, 8.5 error-on-deprecate)intdiv()in the Punycode loop inidna.class.php(eliminates two float-to-int deprecations)E_STRICTdropped from the develop-mode error-reporting line (removed in 8.4)Modernization (incorporates #47)
files/php/functions.inc.php[]array syntax throughoutDocker (new)
Dockerfilebased onphp:8.5-apache,mod_rewriteenableddocker-compose.ymlwith dev bind-mount + a comment on running prod-mode.dockerignoreCI (new)
.github/workflows/lint.yml—php -lon every*.php, matrix onphp:8.1-cliandphp:8.5-cliREADME
Credits
each()replacement (had a typo + wrong count guard) and added?stringnullable params 8.4/8.5 requireClosing PRs and the PHP-8 issue bucket (#25, #32, #38, #43, #46) after merge. #41, #42, #31 will be closed with a note pointing at the documented modern-site limitation.
Test plan
Verified inside the shipped
php:8.5-apachecontainer (PHP 8.5.6):php -lclean on every*.phpfileedit.php) renders cleanlyhttp://example.com/— page returned, links in body rewritten through the proxyhttps://example.com/— samemünchen.de → xn--mnchen-3ya.de,例え.テスト → xn--r8jz45g.xn--zckzah(correct Punycode)error_reporting(E_ALL)anddisplay_errors=1🤖 Generated with Claude Code