質問するログイン新規登録

Q&A

解決済

1回答

1470閲覧

apache/php-fpmでスペースを含むurlにアクセスするとFile not found.と表示される

gengoro

総合スコア1

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

0クリップ

投稿2024/09/12 12:39

編集2024/09/12 14:53

1

0

実現したいこと

スペースを含むurlでも正常にページが表示される。

発生している問題・分からないこと

セキュリティ向上のためapacheをアップデートしたところスペースを含むurlにアクセスできなくなりました。

apache
旧:httpd-2.4.37-65.module_el8.10.0+3860+a6e26e50.x86_64
新:httpd-2.4.37-65.module_el8.10.0+3874+c2064c23.2.x86_64

PHP 7.2.24 (fpm-fcgi) (built: Oct 22 2019 08:28:36)
AlmaLinux 8.10

スペースを含むurlにアクセスすると「File not found.」とだけブラウザに表示されます。
htmlソースにはタグ等はなく「File not found.」だけ記載されています。
ログを見る限り、php-fpm関連機能にurlが渡されたところで「当該ファイルがない」と認識されるように見受けられました。

エラーメッセージ

error

1[Thu Sep 12 20:55:47.238881 2024] [proxy_fcgi:error] [pid 30836:tid 140479882372864] [client 192.168.13.17:54872] AH01071: Got error 'Primary script unknown\n', referer: http://xxx.xxx.xxx.xxx:8081/

該当のソースコード

※抜粋 <IfModule !mod_php5.c> <IfModule !mod_php7.c> # Enable http authorization headers SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 <FilesMatch "\.(php|phar|html)$"> SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" </FilesMatch> </IfModule> </IfModule>

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

apacheをデグレードすると正常稼働するので、当方環境での直接的な原因はapacheのアップグレードであることは分かりました。
設定等で回避できるかリライト等も試しましたがurlにスペースが含まれると
「File not found.」とだけ表示されます。

補足

海外のサイトで同様の事象が相談されていましたが
回避方法が実ファイルがなければSetHandlerしないという方法でした。
実際にはファイルは存在するので解決にはいたりませんでした。
https://serverfault.com/questions/984990/ah01071-got-error-primary-script-unknown-n-apache2-4-php-fpm7-2

Y.H.👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

tezcello

2024/09/13 06:34

> スペースを含むurlにアクセス URLにスペースは使えないのでは?
guest

回答1

0

ベストアンサー

Apache側のバグのようです。
https://bz.apache.org/bugzilla/show_bug.cgi?id=69203
現在の対処法としては古いバージョンを使うか、このページ上部のAttachments内のPatchを適用してApacheをソースからビルドしなおすしかないようです。

投稿2024/09/13 13:01

FoxRefire

総合スコア148

gengoro

2024/09/14 03:14

ありがとうございます! 理由が分かりすっきりしました。 対応バージョンのリリースを待つことにします。 この度は本当にありがとうございました。 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問