За последние 24 часа нас посетили 14847 программистов и 1721 робот. Сейчас ищут 690 программистов ...

Почему пустой $_POST?

Тема в разделе "PHP для новичков", создана пользователем TuXAPuK, 20 июл 2009.

  1. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    Написал я сайт на пхп под виндой и закинул на сервер.
    После некоторого времени на подгонку модулей разных, упёрся вот в такую проблему - перестали доходить данные из $_POST, пол дня, и весь вечер мучаюсь нечего не помогает.

    Вот некоторые данные которые помогли-бы решить проблему..

    Тест самой формы :
    HTML:
    1. <form action="/" method="POST" enctype="multipart/form-data">
    2. <input type="text" name="galUser"><br>
    3. <input type="text" name="galPass"><br>
    4. <input type="submit" value="...">
    5. </form>
    HTTP сапрос от Firefox к серверу :
    Код (Text):
    1. POST / HTTP/1.1
    2. {ВЫРЕЗАННО}
    3. Content-Type: multipart/form-data; boundary=---------------------------16423500210585
    4. Content-Length: 400
    5. -----------------------------16423500210585
    6. Content-Disposition: form-data; name="galUser"
    7.  
    8. private
    9. -----------------------------16423500210585
    10. Content-Disposition: form-data; name="galPass"
    11.  
    12. home
    13. -----------------------------16423500210585--
    HTTP ответ сервера :
    Код (Text):
    1. HTTP/1.x 200 OK
    2. Connection: Keep-Alive
    3. Expires: Thu, 19 Nov 1981 08:52:00 GMT
    4. Pragma: no-cache
    5. Keep-Alive: timeout=15, max=100
    6. Content-Length: 1398
    7. Content-Type: text/html; charset=UTF-8
    8. Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    9. X-Powered-By: PHP/5.2.4-2ubuntu5.6
    10. Date: Sun, 19 Jul 2009 18:19:14 GMT
    11. Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
    Скрипт PHP :
    PHP:
    1. echo getenv('REQUEST_METHOD') .'<br>';
    2. print_r( $_POST );
    Ответ :
    Код (Text):
    1. POST
    2. Array()
    Так-же :
    PHP:
    1. file_get_contents('php://input');
    Возвращает :
    Код (Text):
    1. -----------------------------228163169013162
    2. Content-Disposition: form-data; name="galUser"
    3.  
    4. private
    5. -----------------------------228163169013162
    6. Content-Disposition: form-data; name="galPass"
    7.  
    8. home
    9. -----------------------------228163169013162--

    Очень прошу о помощи.. Проблема в интернете наболевшая, информации по этому поводу минимум..
     
  2. Тигренок

    Тигренок Активный пользователь

    С нами с:
    29 дек 2008
    Сообщения:
    133
    Симпатии:
    0
    Адрес:
    ты такой нарисовался?
    register_globals посмотри
     
  3. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    А при чтём тут Register Globals???

    register_globals - просто включает/выключает переменную $GLOBALS...

    Нет мимо.. Проблема не в этом... Кстати не работает только - $_POST и $_FILES.. С $_GET всё в порядке...
    Для уточнения скажу что на компе на котором я писал скрипт - Register Globals тоже выключен...

    Я думаю что проблема больше происходит из компиляции пхп... Что-то я не учёл когда его собирал...
     
  4. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    :shock: Порой просто хочется что-то сказать, а сказать нечего ...
    Люди деаградируют, основывая свои доводы на неправильном понимании элементарных вещей, и выдают это за факты.
    А я ещё когда-то удивлялся, почему в свет выходят книги, которые читаешь и не понимаешь причины, почему её вообще опубликовали.
    Так держать, люди, и тогда мы до конца скатимся.
     
  5. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    Да я побывал включить register_globals, да - я перезагружал Апач, да - я проверил через phpinfo() что глобальные переменные включены, да я делал var_dump на $GLOBALS... Кроме того что REQUEST_METHOD = POST, никакой информации о полях пост нет...


    PS : Ламерский разбор php://input с помощью пхп меня не спасёт, у меня на этом-же компе другой сайт (который я пишу) и он должен уметь принимать фотки с фотика в формате RAW (~20-200Mb)...
     
  6. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Во-первых, открыть php.ini и посмотреть значение директивы variables_order.
    Её значением должно быть что-то вроде EGPCS или GPCS.
    Если нет — установи в EGPCS.
    Перезапустить апач.

    Если не помогло, значит абсолютно точно причина в том, что твой же скрипт где-то её обнуляет.
     
  7. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    Это нереально... Потому что я рази этого сделал отдельный субдомен, на который положил вот такой вот файл :
    PHP:
    1. <?php
    2. $rr = isset($_GET['rr']) ? $_GET['rr'] : '';
    3. switch ( $rr ) {
    4.  case 'info' :
    5.   phpinfo();
    6.   break;
    7.  case 'glob' :
    8.    echo '<pre>'. print_r($GLOBALS, 1) .'</pre>';
    9.   break;
    10.  case 'phpi' :
    11.    header('Content-type: text/plain');
    12.    readfile('/ПУТЬ/ДО/php.ini');
    13.   die;
    14.  default :  
    15.  
    16. echo '<pre>php://input = '. file_get_contents('php://input') .'</pre>';
    17. echo '<pre>$_POST = '. print_r($_POST, 1) .'</pre>';
    18. echo '<pre>$HTTP_POST_VARS = '. print_r($_POST, 1) .'</pre>';
    19.  } ?>
    20. <form method="post" enctype="application/x-www-form-urlencoded">
    21.  <input id="s70" name="a123">
    22.  <input type="submit">
    23. </form>
    variables_order = "EGPCS"

    .....
     
  8. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Кстати, а $HTTP_GET_VARS =)
    Советую сделать следующее:

    PHP:
    1. <?
    2.  
    3. echo "<pre>".print_r($GLOBALS, true)."</pre>";
    4.  
    5. ?>
    И смотреть, что да как там устроено.
     
  9. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    HTTP_GET_VARS - это алиас $_GET сделанный для обратной совмеснимости с PHP >3

    Если найдётся человек который в этом понимает я ему даже root доступ дам - мне главное разобраться с встречающимся проблемами, всё-равно OS потом на снос будет вместо Desktop, Server - ставится.. Просто человек который для меня сервера подготавливал в канаду учится уехал приходится во всей установке в ручную разбираться.. Вот первая проблема появилась в которой самостоятельно разобраться не могу...
     
  10. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Поставь php посвежее для начала, наверняка баг в конкретной сборке.
     
  11. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Спасибо, знаю.
    Я намекал на то, что на серваке твоём стоит версия какая-нибудь времен Юлия Цезаря.
    В РНР 5, по-умолчанию, отключена регистрация этого массива да и нахер он не нужен.

    В Канаде нет интернета?
     
  12. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    А вот с этим проблемы.. Пакетом его просто нету или я не нашол, а мэйкером я до конца пользоваться не научился... Тем-более не послетают ли все настройки MySQL и пр.

    ЗЫ : Есть опыт по сборке PHP из исходника на винде.
    ЗЫЫ : Если не будет более простого решения, то скорее всего придётся компелить...
     
  13. http://dotdeb.org
     
  14. Под линуксом пхп компилится элементарно.
     
  15. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    За ссылку большое спасибо Теперь 5.3.0 :!:

    Но к сожалению проблемы это не исправило :(

    А можно поинтересоваться, а от Apache может зависеть $_POST? или это только глюк PHP и/или конфигов?
     
  16. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Это уже становится смешным ... =)
     
  17. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    Нечего смешного.. Лично я считаю такие посты просто флудом.


    В проблеме разобрался сам, как всегда помог 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'


    С уважением ко всем ответившим Евгений.
     
  18. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Я кстати перед тем как писать в эту тему тоже грешил на этот параметр, но протестировал у себя на всевозможных значениях и багов не обнаружил.

    Ты же сам показал, что данные приходят в php.

    И всё таки помогло изменения post_max_size?
     
  19. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    Это для тех кому рецепт с post_max_size не поможет, которым вообще пост не приходит...

    Yepp... С 4G переключит на 1024M и всё заработало как часики...

    Всё-равно большое спасибо... 2е суток не спал, изза этого... Получил для себя очень хороший урок...
     
  20. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    TuXAPuK
    а если поставить 1G будет работать?
     
  21. TuXAPuK

    TuXAPuK Активный пользователь

    С нами с:
    5 янв 2007
    Сообщения:
    38
    Симпатии:
    0
    Адрес:
    LV -> Riga
    Будет... Почему бы и нет.. Я поставил 1024M потому что мне в мегабайтах считать удобнее...
     
  22. vaajnur

    vaajnur Новичок

    С нами с:
    15 май 2017
    Сообщения:
    40
    Симпатии:
    3
    проверь конфиги апач или Nginx.
    В nginx допиши
    PHP:
    1.               rewrite  ^(.*)$  /index.php last;