Upgrade PHP7 на Ubuntu 14.04

Для тех кто еще не обновил свои сервера на PHP7, настроенные по заметке Василия Наумкина.
Добавляем репозиторий
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
sudo apt-get update && apt-get purge php5-fpm && apt-get --purge autoremove && apt-get install php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-json php7.0-mcrypt php7.0-opcache php7.0-xml php7.0-mbstring

У меня все заработало. php5 при этом можно оставить (хотя может чего-нибудь вылезти).
В конфигурации php7-fpm меняем только сокет
listen = /var/run/php/php7-eco.sock
и удаляем закоментируемую строку
#php_admin_value[disable_functions] = exec,passthru и т.д.
В конфиге nginx также меняем только сокет
upstream backend-eco {server unix:/var/run/php/php7-eco.sock;}
После изменения конфигов не забываем рестартить сервисы
service nginx restart
service php7.0-fpm restart
Sergey Pozhidaev
04 мая 2016, 08:05
modx.pro
13
9 324
+9

Комментарии: 31

Alexander V
04 мая 2016, 23:40
0
Экспорт в PMA у вас работает?
    Sergey Pozhidaev
    05 мая 2016, 05:22
    0
    Если под PMA имеется в виду PhpMyAdmin — сейчас проверил, все работает.
    Алексей
    24 мая 2016, 10:34
    +1
    Спасибо за инструкцию! все работает на Ubuntu 14.04.3 LTS. устанавливал с помощью ansible github.com/itcraftsmanpl/ansible-role-php7
    мой плэйбук:
    - hosts: prod
      become: yes
      become_method: sudo
      roles:
        - { role: itcraftsmanpl.ansible-role-php7, php_timezone: "Asia/Ashkhabad", php_upload_max_filesize: "100M", php_post_max_size: "100M", php_memory_limit: "128M", php_packages: [php7.0-common, php7.0-cli, php7.0-intl, php7.0-curl, php7.0-cgi, php7.0-fpm, php7.0-mysql, php7.0-gd, php7.0-mbstring, php7.0-mcrypt, php7.0-json, php7.0-xml] }
      Alexey
      25 мая 2016, 08:54
      0
      Господа, а файл php.ini надо заново править, ставя теже значения как и в php5x?
        Sergey Pozhidaev
        25 мая 2016, 08:57
        +1
        Естественно, если вы не используете настройки по-умолчанию.
        Пётр Молчанов
        30 мая 2016, 11:12
        0
        В конфигурации php7-fpm меняем только сокет
        listen = /var/run/php/php7-eco.sock
        а зачем менять стандартный путь?
          Sergey Pozhidaev
          30 мая 2016, 11:16
          0
          Ну можно не менять, если PHP5 убираете
            Пётр Молчанов
            30 мая 2016, 11:21
            0
            так ты выше пишешь
            sudo apt-get update && apt-get purge php5-fpm
            соответственно, пхп5 удаляется
              Sergey Pozhidaev
              30 мая 2016, 11:22
              0
              Ну я выше написал, что 5 можно оставить
                Sergey Pozhidaev
                30 мая 2016, 11:35
                0
                Убери purge php5-fpm и 5 останется. Будут работать вместе. Проблем совместной работы не заметил.
                  Пётр Молчанов
                  30 мая 2016, 11:46
                  0
                  Это-то я понимаю, просто не оч корректно написано) Все же будут копипастить и делать как написано, хотя с такой строчкой
                  sudo apt-get update && apt-get purge php5-fpm && apt-get --purge autoremove && apt-get install php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-json php7.0-mcrypt php7.0-opcache php7.0-xml php7.0-mbstring
                  можно не делать лишнее действие (менять путь сокета)
                  Sergey Pozhidaev
                  30 мая 2016, 11:35
                  0
                  del
              Дмитрий
              13 июля 2016, 10:03
              0
              E: Unable to locate package php7.0-fpm
              E: Couldn't find any package by regex 'php7.0-fpm'
              E: Unable to locate package php7.0-mysql
              E: Couldn't find any package by regex 'php7.0-mysql'
              E: Unable to locate package php7.0-curl
              E: Couldn't find any package by regex 'php7.0-curl'
              E: Unable to locate package php7.0-gd
              E: Couldn't find any package by regex 'php7.0-gd'
              E: Unable to locate package php7.0-json
              E: Couldn't find any package by regex 'php7.0-json'
              E: Unable to locate package php7.0-mcrypt
              E: Couldn't find any package by regex 'php7.0-mcrypt'
              E: Unable to locate package php7.0-opcache
              E: Couldn't find any package by regex 'php7.0-opcache'
              E: Unable to locate package php7.0-xml
              E: Couldn't find any package by regex 'php7.0-xml'
              E: Unable to locate package php7.0-mbstring
              E: Couldn't find any package by regex 'php7.0-mbstring'
              Alexey
              18 августа 2016, 14:55
              0
              Товарищи, подскажите в чем трабла?
              Накинул php7 не удаляя php5.
              Пути прописал вроде бы верно. Но после рестарта сервисов папка /var/run/php пустая, хотя там должен быть sock
              в логах пусто

              Старые настройки в папке с php5 оставил. Но а nginx для сайта прописал новые имена для backend
              Соответсвенно на теже имена создал conf в pool.d

              Простая html в папке с сайтом открывается, но всё modx-ское выдает 502 Bad Gateway

              ps. в phpmyadmin ничего не менял (изменил только то что для него в настройках nginx. т.е. присвоил новый backend )
              pps. настройки php7 аналогичны тем, что в заметке Василия Наумкина
                Иван Бондаренко
                18 августа 2016, 15:13
                0
                Ты удалил вот эту строку

                #php_admin_value[disable_functions] = exec,passthru и т.д.

                во всех conf файлах в настройках php/7.0/fpm/pool.d ??? Проверь. Если не ошибаюсь, у меня именно из-за этой строки была ошибка 502 Bad Gateway.
                  Alexey
                  19 августа 2016, 08:44
                  0
                  да, удалил.
                  Но disable_function для exec и passthru прописаны в общих настройках php.
                  спасибо за ответ!
                Alexey
                19 августа 2016, 09:16
                0
                папка var/run/php вообще пустая. хотя судя по всему там должен бы быть хотя бы php7.0-fpm.pid

                ощущение, что php7.0 вообще не взлетел
                  Alexey
                  19 августа 2016, 10:17
                  0
                  т.е. если исключить все мои шаманства — активности в php7 не видно вообще. причем сервис останавливается/стартует. логи и все папки пустые. 5-ю версию сносить пробовал и результат тот же.
                  подожду обновки. может ситуация исправится
                    Alexey
                    19 августа 2016, 16:04
                    0
                    С дефолтным пулом (www) — пхп7 запускается. Но стоит изменить какой-то из старых (по указанному вначале статьи рецепту) — пхп отваливается.
                    по ps aux | grep php полная тишина в 7й версии.
                      Пётр Молчанов
                      19 августа 2016, 16:07
                      0
                      честно, я аще не понимаю зачем в статье меняют дефолтный путь. и тебе советую не менять, всё работает по-умолчанию
                        Alexey
                        19 августа 2016, 16:40
                        0
                        без /Var тоже пробовал.
                        точнее без прослойки /php/ хотя… и без var тоже )
                        пол дня сверяю пути и логику. и должно бы взлететь, но…

                        стоит в pool.d поместить любой пул — пхп7 отваливается
                          Alexey
                          19 августа 2016, 17:15
                          0
                          т.е. если просто переместить из pool.d 5й версии В pool.d 7й версии, перегрузить сервисы — то всё должно бы завертеться?
                            Пётр Молчанов
                            19 августа 2016, 17:23
                            0
                            нет. я имею ввиду, что при чистой установке 7ки всё работает по-умолчанию. я сносил 5ку и по чистой установил 7ку. советую снести все версии пхп и на чистую установить 7ку
                            З.Ы.: надеюсь, бекапы у вас есть. они всегда должны быть
                              Alexey
                              19 августа 2016, 17:30
                              0
                              Без Бэкапов, конечно нельзя.
                              попробую
                        Alexey
                        19 августа 2016, 22:36
                        0
                        Решил затык. не знаю смеяться или плакать. Проблема была в пустяке.
                        Вощм в конфигах pool.d у меня стояла закомментированная строка со знаком #. вот он и не давал запуститься пхп7. видимо пхп5 допускал такой синтаксис.
                        во всех конфигах почистил эту строку — всё заработало. пути вроде можно не менять.
                          Sergey Pozhidaev
                          20 августа 2016, 05:15
                          0
                          Если бы Алексей внимательно прочитал мою заметку, то и грабель можно было избежать. Может это моя вина что я не разжевал зачем вот эта строка
                          и удаляем закоментируемую строку

                          #php_admin_value[disable_functions] = exec,passthru
                          Ну теперь будете знать
                            Alexey
                            20 августа 2016, 08:24
                            0
                            думалось, что суть в операторе строки, а не в символе (хотя… с чего бы?).
                            Но спасибо! буду знать )
                              Пётр Молчанов
                              22 августа 2016, 10:34
                              0
                              кстати, а у меня вообще этой строки не было почему-то
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                            31