PHPでURLに含まれているフラグメントが取得できないので、何でかなーと思って調べていたら、フラグメントはもともとURIに含まれていない(RFC3986でURIには含まれるようになったがhttp_URLには含まれない)ということが判明。つまりブラウザは、フラグメントをサーバへのリクエストに使用しない。よってサーバ側では取得できるはずがないのだった。
HTML:文書中の特定の場所へリンクする"#"(フラグメント識別子)を使用する際の注意点:GET引数
Uniform Resource Identifiers
fragment (baz)
部分識別子。絶対パスとの区切りには、# を使います。 RFC 3986 によれば、fragment も URI の中に含まれますが、依然として "http_URL" の中には fragment は含まれません。 HTTP において、fragment はリソース内の特定部分を指すものであり、即ち fragment はリソース取得後にのみ意味を持ちます。