Php-файл не найден, если путь содержит пробелы с использованием сокета fastcgi unixPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Php-файл не найден, если путь содержит пробелы с использованием сокета fastcgi unix

Сообщение Anonymous »

Я переношу сайт, созданный на базе Windows Xampp, на сервер под управлением Ubuntu 24.04, Apache 2.4.62 и php 7.4.33. Все работает нормально, за исключением того, что файлы php, содержащие пробелы в любом месте пути, не найдены.
Я подтвердил, что файл действительно существует, запустив

Код: Выделить всё

ls "/var/www/html/tempdir/test name.php"
который возвращает путь к файлу.
Я просмотрел файлы журналов и почти уверен, что понял, в чем проблема.

Код: Выделить всё

[core:trace5] [pid 14742:tid 14827] protocol.c(713): [client 127.0.0.1:35246] Request received from client: GET /tempdir/test%20name.php HTTP/1.1
[http:trace4] [pid 14742:tid 14827] http_request.c(435): [client 127.0.0.1:35246] Headers received from client:
[http:trace4] [pid 14742:tid 14827] http_request.c(438): [client 127.0.0.1:35246]   Host: localhost
[http:trace4] [pid 14742:tid 14827] http_request.c(438): [client 127.0.0.1:35246]   User-Agent: Wget/1.21.2
[http:trace4] [pid 14742:tid 14827] http_request.c(438): [client 127.0.0.1:35246]   Accept: */*
[http:trace4] [pid 14742:tid 14827] http_request.c(438): [client 127.0.0.1:35246]   Accept-Encoding: identity
[http:trace4] [pid 14742:tid 14827] http_request.c(438): [client 127.0.0.1:35246]   Connection: Keep-Alive
[authz_core:debug] [pid 14742:tid 14827] mod_authz_core.c(815): [client 127.0.0.1:35246] AH01626: authorization result of Require all granted: granted
[authz_core:debug] [pid 14742:tid 14827] mod_authz_core.c(815): [client 127.0.0.1:35246] AH01626: authorization result of : granted
[core:trace3] [pid 14742:tid 14827] request.c(360): [client 127.0.0.1:35246] request authorized without authentication by access_checker_ex hook: /tempdir/test name.php
[proxy:trace2] [pid 14742:tid 14827] proxy_util.c(2457): [client 127.0.0.1:35246] *: fixup UDS from proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/var/www/html/tempdir/test name.php: fcgi://localhost/var/www/html/tempdir/test name.php (/run/php/php7.4-fpm.sock)
[proxy_fcgi:trace1] [pid 14742:tid 14827] mod_proxy_fcgi.c(76): [client 127.0.0.1:35246] canonicalising URL //localhost/var/www/html/tempdir/test name.php
[proxy_fcgi:debug] [pid 14742:tid 14827] mod_proxy_fcgi.c(123): [client 127.0.0.1:35246] AH01060: set r->filename to proxy:fcgi://localhost/var/www/html/tempdir/test%20name.php
[proxy:trace2] [pid 14742:tid 14827] proxy_util.c(2625): [client 127.0.0.1:35246] *: using default reverse proxy worker for fcgi://localhost/var/www/html/tempdir/test%20name.php (no keepalive)
[proxy:debug] [pid 14742:tid 14827] mod_proxy.c(1465): [client 127.0.0.1:35246] AH01143: Running scheme fcgi handler (attempt 0)
[proxy_fcgi:debug] [pid 14742:tid 14827] mod_proxy_fcgi.c(1078): [client 127.0.0.1:35246] AH01076: url: fcgi://localhost/var/www/html/tempdir/test%20name.php proxyname: (null) proxyport: 0
[proxy_fcgi:debug] [pid 14742:tid 14827] mod_proxy_fcgi.c(1087): [client 127.0.0.1:35246] AH01078: serving URL fcgi://localhost/var/www/html/tempdir/test%20name.php
[proxy:debug] [pid 14742:tid 14827] proxy_util.c(2797): AH00942: FCGI: has acquired connection for (*:80)
[proxy:debug] [pid 14742:tid 14827] proxy_util.c(3242): [client 127.0.0.1:35246] AH00944: connecting fcgi://localhost/var/www/html/tempdir/test%20name.php to localhost:8000
[proxy:debug] [pid 14742:tid 14827] proxy_util.c(3309): [client 127.0.0.1:35246] AH02545: fcgi: has determined UDS as /run/php/php7.4-fpm.sock (for localhost:8000)
[proxy:debug] [pid 14742:tid 14827] proxy_util.c(3450): [client 127.0.0.1:35246] AH00947: connecting /var/www/html/tempdir/test%20name.php to /run/php/php7.4-fpm.sock:0 (localhost:8000)
[proxy:debug] [pid 14742:tid 14827] proxy_util.c(3832): AH02823: FCGI: connection established with Unix domain socket /run/php/php7.4-fpm.sock (localhost:8000)
[proxy_fcgi:error] [pid 14742:tid 14827] [client 127.0.0.1:35246] AH01071: Got error 'Primary script unknown'
[proxy_fcgi:trace4] [pid 14742:tid 14827] util_script.c(572): [client 127.0.0.1:35246] Headers from script 'test%20name.php':
[proxy_fcgi:trace4] [pid 14742:tid 14827] util_script.c(575): [client 127.0.0.1:35246]   Status: 404 Not Found
[proxy_fcgi:trace1] [pid 14742:tid 14827] util_script.c(654): [client 127.0.0.1:35246] Status line from script 'test%20name.php': 404 Not Found
[proxy_fcgi:trace4] [pid 14742:tid 14827] util_script.c(575): [client 127.0.0.1:35246]   Content-type: text/html; charset=UTF-8
Вероятно, я ошибаюсь, но я думаю, что ошибка заключается в том, что когда proxy_util.c(3450) подключается к сокету, он сохраняет хвост URL-адреса в формате TCP с %20. Так как это исправить? Реструктуризация сайта невозможна.
Похоже, у этого человека была такая же проблема. https://stackoverflow.com/questions/266 ... spacestext

Подробнее здесь: https://stackoverflow.com/questions/787 ... nix-socket
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»