Написал я сайт на пхп под виндой и закинул на сервер. После некоторого времени на подгонку модулей разных, упёрся вот в такую проблему - перестали доходить данные из $_POST, пол дня, и весь вечер мучаюсь нечего не помогает. Вот некоторые данные которые помогли-бы решить проблему.. Тест самой формы : HTML: <form action="/" method="POST" enctype="multipart/form-data"> <input type="text" name="galUser"><br> <input type="text" name="galPass"><br> <input type="submit" value="..."> </form> HTTP сапрос от Firefox к серверу : Код (Text): POST / HTTP/1.1 {ВЫРЕЗАННО} Content-Type: multipart/form-data; boundary=---------------------------16423500210585 Content-Length: 400 -----------------------------16423500210585 Content-Disposition: form-data; name="galUser" private -----------------------------16423500210585 Content-Disposition: form-data; name="galPass" home -----------------------------16423500210585-- HTTP ответ сервера : Код (Text): HTTP/1.x 200 OK Connection: Keep-Alive Expires: Thu, 19 Nov 1981 08:52:00 GMT Pragma: no-cache Keep-Alive: timeout=15, max=100 Content-Length: 1398 Content-Type: text/html; charset=UTF-8 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 X-Powered-By: PHP/5.2.4-2ubuntu5.6 Date: Sun, 19 Jul 2009 18:19:14 GMT Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch Скрипт PHP : PHP: echo getenv('REQUEST_METHOD') .'<br>'; print_r( $_POST ); Ответ : Код (Text): POST Array() Так-же : PHP: file_get_contents('php://input'); Возвращает : Код (Text): -----------------------------228163169013162 Content-Disposition: form-data; name="galUser" private -----------------------------228163169013162 Content-Disposition: form-data; name="galPass" home -----------------------------228163169013162-- Очень прошу о помощи.. Проблема в интернете наболевшая, информации по этому поводу минимум..
А при чтём тут Register Globals??? register_globals - просто включает/выключает переменную $GLOBALS... Нет мимо.. Проблема не в этом... Кстати не работает только - $_POST и $_FILES.. С $_GET всё в порядке... Для уточнения скажу что на компе на котором я писал скрипт - Register Globals тоже выключен... Я думаю что проблема больше происходит из компиляции пхп... Что-то я не учёл когда его собирал...
:shock: Порой просто хочется что-то сказать, а сказать нечего ... Люди деаградируют, основывая свои доводы на неправильном понимании элементарных вещей, и выдают это за факты. А я ещё когда-то удивлялся, почему в свет выходят книги, которые читаешь и не понимаешь причины, почему её вообще опубликовали. Так держать, люди, и тогда мы до конца скатимся.
Да я побывал включить register_globals, да - я перезагружал Апач, да - я проверил через phpinfo() что глобальные переменные включены, да я делал var_dump на $GLOBALS... Кроме того что REQUEST_METHOD = POST, никакой информации о полях пост нет... PS : Ламерский разбор php://input с помощью пхп меня не спасёт, у меня на этом-же компе другой сайт (который я пишу) и он должен уметь принимать фотки с фотика в формате RAW (~20-200Mb)...
Во-первых, открыть php.ini и посмотреть значение директивы variables_order. Её значением должно быть что-то вроде EGPCS или GPCS. Если нет — установи в EGPCS. Перезапустить апач. Если не помогло, значит абсолютно точно причина в том, что твой же скрипт где-то её обнуляет.
Это нереально... Потому что я рази этого сделал отдельный субдомен, на который положил вот такой вот файл : PHP: <?php error_reporting(E_ALL); $rr = isset($_GET['rr']) ? $_GET['rr'] : ''; switch ( $rr ) { case 'info' : phpinfo(); break; case 'glob' : echo '<pre>'. print_r($GLOBALS, 1) .'</pre>'; break; case 'phpi' : header('Content-type: text/plain'); readfile('/ПУТЬ/ДО/php.ini'); die; default : echo '<pre>php://input = '. file_get_contents('php://input') .'</pre>'; echo '<pre>$_POST = '. print_r($_POST, 1) .'</pre>'; echo '<pre>$HTTP_POST_VARS = '. print_r($_POST, 1) .'</pre>'; } ?> <form method="post" enctype="application/x-www-form-urlencoded"> <input id="s70" name="a123"> <input type="submit"> </form> variables_order = "EGPCS" .....
Кстати, а $HTTP_GET_VARS =) Советую сделать следующее: PHP: <? echo "<pre>".print_r($GLOBALS, true)."</pre>"; ?> И смотреть, что да как там устроено.
HTTP_GET_VARS - это алиас $_GET сделанный для обратной совмеснимости с PHP >3 Если найдётся человек который в этом понимает я ему даже root доступ дам - мне главное разобраться с встречающимся проблемами, всё-равно OS потом на снос будет вместо Desktop, Server - ставится.. Просто человек который для меня сервера подготавливал в канаду учится уехал приходится во всей установке в ручную разбираться.. Вот первая проблема появилась в которой самостоятельно разобраться не могу...
Спасибо, знаю. Я намекал на то, что на серваке твоём стоит версия какая-нибудь времен Юлия Цезаря. В РНР 5, по-умолчанию, отключена регистрация этого массива да и нахер он не нужен. В Канаде нет интернета?
А вот с этим проблемы.. Пакетом его просто нету или я не нашол, а мэйкером я до конца пользоваться не научился... Тем-более не послетают ли все настройки MySQL и пр. ЗЫ : Есть опыт по сборке PHP из исходника на винде. ЗЫЫ : Если не будет более простого решения, то скорее всего придётся компелить...
За ссылку большое спасибо Теперь 5.3.0 :!: Но к сожалению проблемы это не исправило А можно поинтересоваться, а от Apache может зависеть $_POST? или это только глюк PHP и/или конфигов?
Нечего смешного.. Лично я считаю такие посты просто флудом. В проблеме разобрался сам, как всегда помог Google Если внимательно читать и осмыслить - http://www.php.ru/manual/ini.core.html# ... t-max-size то сразу становится ясно что весть POST грузится в оперативную память, и потом из неё парсится на поля. В связи с тем что у меня post_max_size был равен 4G, а оперативной памяти на компьютере всего 2Gb то при загрузки конфигурации после некоторых проверок post_max_size становился скорее всего равным - 0. Дополнительная информация : Возможно ограничение делает сервер Apache : http://httpd.apache.org/docs/2.0/mod/co ... equestbody Так-же решение проблемы можно найти используя запрос к GOOGLE 'php ("$_POST"&|"$_FILES") empty -ajax' С уважением ко всем ответившим Евгений.
Я кстати перед тем как писать в эту тему тоже грешил на этот параметр, но протестировал у себя на всевозможных значениях и багов не обнаружил. Ты же сам показал, что данные приходят в php. И всё таки помогло изменения post_max_size?
Это для тех кому рецепт с post_max_size не поможет, которым вообще пост не приходит... Yepp... С 4G переключит на 1024M и всё заработало как часики... Всё-равно большое спасибо... 2е суток не спал, изза этого... Получил для себя очень хороший урок...