ISPmanager PHP7 для скриптов запускаемых через крон
Столкнулся со следующей проблемой: Использовал для нового проекта PHP7. Продакшн управляется последней версией ISPmanager, где по-умолчанию все еще используется старый PHP 5.4.16, а 7 версия выбирается при настройке домена. Т.к. для домена версия php настраивается при создании, то и "фронтенд" работает без проблем, однако проблема начинается при запуске консольных скриптов, т.к. по-умолчанию, в консоли, используется 5.4 ..
Итак, предположим, что домен создан с такой конфигурацией
Однако, если вы авторизуетесь по ssh и посмотрите версию php, то всего скорее увидите следующее:
1 2 3 4 5 6 |
-bash-4.2$ php -v PHP 5.4.16 (cli) (built: Nov 6 2016 00:29:02) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies |
Как видите используется php версии 5.4, поэтому скрипты с кодом использующим нововведения php 7, не будут работать.
Исправить, это можно так:
- Идем в папку с версией php и смотрим где он расположен:
123# cat ~/data/php-bin-isp-php70/php
В моем случае это #!/opt/php70/bin/php-cgi
- Создаем скрипт для запуска php этой версии, php7.sh:
12345#!/bin/bashPHP_EXEC="/opt/php70/bin/php -c /var/www/user/data/php-bin-isp-php70"$PHP_EXEC "$@"
Опцией -c указываем где искать файл php.ini - Делаем скрипт исполняемым:
123# chmod +x php7.sh - Проверяем:
123# ./php7.sh -ver
Результат:
123456-bash-4.2$ php7.sh -verPHP 7.0.20 (cli) (built: Jun 16 2017 11:04:39) ( NTS )Copyright (c) 1997-2017 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
Теперь в кроне, достаточно указать наш баш скрипт, чтобы использовать php 7, примерно так:
1 2 3 |
* * * * * /path/to/php7.sh test.php >/dev/null 2>&1 |
С этим понятно, теперь давайте модифицируем скрипт так, чтобы запускать не php, а yii. Создаем ./yii.sh, там же где лежит файл ./yii с таким содержимым:
1 2 3 4 5 6 7 8 9 |
#/bin/bash PHP_EXEC="/opt/php70/bin/php -c /var/www/user/data/php-bin-isp-php70" SCRIPT_FILEPATH=$0 SCRIPT_DIR=$(dirname "$0") $PHP_EXEC $SCRIPT_DIR/yii "$@" |
Добавляем ему права на запуск
1 2 3 |
# chmod +x yii.sh |
Теперь, можем в кроне, выполнять консольные команды через php7, практически с тем же синтаксисом:
1 2 3 |
* * * * * /var/www/user/data/www/site.com/yii.sh hello >/dev/null 2>&1 |
Author: | Tags: /
| Rating:
Leave a Reply