За последние 24 часа нас посетили 22730 программистов и 1218 роботов. Сейчас ищет 701 программист ...

Настройки Apache и php в Ubuntu

Тема в разделе "PHP для новичков", создана пользователем gpi65, 11 апр 2019.

  1. gpi65

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

    С нами с:
    15 май 2007
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте.
    Имею:
    1. Ubuntu 18.04
    2. LAMP (Apache2.4, php7.2, mysql)
    3. Исходный код сайта, взятый с хостинга. На хостинге все работает нормально.

    Локально сайт открывается, ссылки работают, все нормально.
    В админке пытаюсь добавить запись. Действия следующие:
    имеется форма ввода, метод у формы POST.
    В контроллере, который обрабатывает полученные из формы данные, проверяю, переданы ли данные методом POST
    PHP:
    1. if($_SERVER['REQUEST_METHOD'] == 'POST')
    и далее идет их обработка.
    Но ничего не происходит.
    Вывожу на экран содержимое $_SERVER и вижу, что REQUEST_METHOD - GET.
    Решил проверить содержимое массивов $_POST и $_GET, вывел их на экран раньше проверки метода. Выводятся два пустых массива.

    Подозреваю, что дело тут в настройках или Apache, или PHP.
    Подскажите пожалуйста, как все это настроить.
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    По идее, с дефолтными настройками (всё по-умолчанию) - форма, отправленная методом post должна приходить в массив $_POST и REQUEST_METHOD должен определяться правильно. Что-то даже не припоминаю, какой такой настройкой это можно изменить :) Возможно, у тебя в форме отправляется файл, но при этом у формы нет атрибута enctype="multipart/form-data" ?
     
  3. gpi65

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

    С нами с:
    15 май 2007
    Сообщения:
    14
    Симпатии:
    0
    Да нет, я же написал, что на хостинге все работает. И данная конкретная форма содержит три инпута с типом text
     
  4. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Возможно то что выводится на страницу - это уже после редиректа, который часто делают после обработки данных POST.
    Нужен код формы и обработчика, чтобы не гадать.
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.797
    Симпатии:
    650
    На 99,9% засада где-то в др. месте. Роутинг, не подключены нужные расширения или др. расхождения в конфиге сервера/хоста.
    --- Добавлено ---
    После тестового вывода поставьте бряк/exit или пишите в файл. Как выше написали, возможно вы видите не «первый» вывод.
     
  6. gpi65

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

    С нами с:
    15 май 2007
    Сообщения:
    14
    Симпатии:
    0
    Вот я про конфиги и спрашиваю. Где там можно поискать соответствующие настройки?
    --- Добавлено ---
    Форма
    HTML:
    1. <form class="admin-form" action='/addgalery' method='post'>
    2.     <span>Название</span><br/>
    3.     <input type='text' class="textmenu" name ='galery_name'><br/>
    4.     <span>Категория</span><br/>
    5.     <select class="mainmenu" name="category">
    6.         <option value="-1"></option>
    7.                                     <option value="4">Фото</option>
    8.                                     <option value="10">Фото с отдыха</option>
    9.                                     <option value="11">Природа</option>
    10.                                     <option value="12">Встречи друзей</option>
    11.                                     <option value="13">События</option>
    12.                                     <option value="14">Просто удачные фото</option>
    13.                                     <option value="15">Экскурсии</option>
    14.                                     <option value="16">Домашний отдых</option>
    15.                                 </select><br/><br/>
    16.     <p>Ключевые слова</p>
    17.     <input type="text" class="select-menu" name="keywords" />
    18.     <p>Описание</p>
    19.     <input type="text" class="select-menu" name="description" /><br/>
    20.     <input class="submit_login" type='submit' name='submit' value ='Добавить'><br/>
    21. </form>
    Контроллер
    PHP:
    1. <?php
    2.  
    3. class Addgalery extends Base {
    4.    
    5.     protected $ob_us;
    6.     protected $menu;
    7.    
    8.     protected function input($param = array()) {
    9.  
    10.         parent::input($param);
    11.         $this->ob_us = Model_User::get_instance();
    12.                
    13.         $this->menu = $this->ob_us->get_menu_photo();
    14.         if($this->menu == NULL){
    15.             exit();
    16.         }
    17.         // в этом месте выводил на экран $_SERVER['REQUEST_METHOD'], получил GET
    18.         // тут же выводил на экран содержимое $_GET и $_POST, получал пустые массивы
    19.         if($_SERVER['REQUEST_METHOD'] == 'POST') {
    20.             // сюда я не попадаю, пытался сделать echo "111", ничего не выводилось
    21.             $category = (int)$_POST['category'];
    22.             if(!$category){
    23.                 exit("Выберите категорию");
    24.             }
    25.  
    26.             $galery_name = $_POST['galery_name'];
    27.             $keywords = trim(strip_tags($_POST['keywords']));
    28.             $description = trim(strip_tags($_POST['description']));
    29.  
    30.             $this->queryparams = array('galery_name' => $galery_name,
    31.                                             'category' =>  $category,
    32.                                             'keywords' =>  $keywords,
    33.                                             'description' =>  $description
    34.                                             );
    35.             $result = $this->ob_us->add_galery($this->queryparams);
    36.             echo $result;
    37.             if($result > 0 ){
    38.                 header("Location:/addgalery");  
    39.             }
    40.             header("Location:/addgalery");
    41.         }
    42.     }
    43.    
    44. }
    45. ?>
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.797
    Симпатии:
    650
    :) Проблема не в том, где искать, а в том, что искать. См., я дополнил пред пост.
     
  8. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    После 13 строчки проверьте
    PHP:
    1. var_dump($this->menu);
    Но перед проверкой закомментируйте строки с 37 по 40
    Так же можете проверить еще раз массив $_SERVER, закомментировав эти строки
     
  9. gpi65

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

    С нами с:
    15 май 2007
    Сообщения:
    14
    Симпатии:
    0
    поэкспериментировать смогу только вечером. Сейчас нахожусь на работе
    --- Добавлено ---
    Меню проверял, выводится нормально
     
  10. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Строчки закомментируйте с редиректом и $_SERVER с $_POST проверьте.
     
  11. gpi65

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

    С нами с:
    15 май 2007
    Сообщения:
    14
    Симпатии:
    0
    Вечером проверю. Отпишу о результате завтра
     
  12. gpi65

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

    С нами с:
    15 май 2007
    Сообщения:
    14
    Симпатии:
    0
    Да, вы оказались правы. Если без редиректа, то все вижу нормально. А я еще удивлялся, как это все в базу попадает, а данных я не вижу. Спасибо