Этот phpinfo () демонстрирует проблему.
Я передаю URL-адрес строки запроса:
?qwerty=asdfg
В результате я ожидаю, что он перечислит эти две переменные PHP:
_REQUEST["qwerty"] asdfg _GET["qwerty"] asdfg
А также эта строка запроса:
_SERVER["QUERY_STRING"] qwerty=asdfg
Однако он не работает. Ни одна из этих переменных, похоже, не установлена вообще.
Я использую lighttpd. Это может быть или не быть связано с проблемой, но мой greengar.com-lighttpd.conf выглядит так, потому что я использую WordPress для большинства страниц домена:
### Generated by Elliot ### WordPress: http://www.greengar.com url.rewrite += ( "^/(wp-.+).*/?" => "$0", "^/(blog/wp-.+).*/?" => "$0", "^/(.*.php)" => "$0", "^/(.*.pdf)" => "$0", "^/(.*.png)" => "$0", "^/(.*.html)" => "$0", "^/(.*.ico)" => "$0", "^/(.*.gif)" => "$0", "^/(.*.txt)" => "$0", "^/(images).*/?" => "$0", "^/(sitemap.xml)" => "$0", "^/(xmlrpc.php)" => "$0", "^/(.+)/?$" => "/index.php/$1" )
Опять же, я не знаю точно, связано ли это с проблемой.
Мой вопрос: почему PHP не видит строку запроса?
И как мне это исправить?
Вот обычный phpinfo (), который успешно видит строку запроса. Это выполняется на другом сервере, на котором запущен Apache.
http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModRewrite
Внизу:
«Если вы хотите передать строку запроса (? Foo = bar) в пункт перезаписи, вы должны явно сопоставить ее:
И альтернатива – прочитать его через $ _SERVER ['REQUEST_URI']
Просто проверьте, но это должно быть $ _SERVER ["QUERY_STRING"] – ваш фактический код включает $?