Если у вас нет больше web сервисов, к которым вы хотите иметь доступ из внешней сети - то настраивайте, ничего не случится.
Если у вас есть еще что-то типа веб-сервера хостящегося дома, то тут уже надо думать и поднимать что-то типа nginx на маршрутизаторе и в зависимости от доменного имени перенаправлять трафик.
В любом случае, на обычный серфинг по сайтам ваша настройка никак не должна повлиять.
Ну вот смотрите, ваш белый IP (допустим 1.2.3.4) присвоен маршрутизатору.
Сервер вы, вероятно, запускаете на компьютере, который подключен к маршрутизатору имеет локальный ip адрес, например 192.168.1.100. Просто так из интернета к серверу вы недостучитесь.
Можно сделать "проброс портов" на маршрутизаторе (через админку), эта функция будет транслировать пакеты к 1.2.3.4:9876 на 192.168.1.100:9876. Параллельно неплохо бы закрепить локальный адрес 192.168.1.100 за конкретным MAC адресом, чтобы завтра компьютер не получил другой локаьлный IP.
На счет инвертирования не понял - зачем?
Я на вскидку не скжу, но мне кажется что если у нас есть две точки со значениями, например, 1 и 2, то это 0001 и 0010, то результирующий байт будет 00010010.
Да, конечно, варианты:
1) Найти откуда запускается php (там вероятно будет символьная ссылка на php7) и заменить ее на ссылку на php56
2) Найти php56 и запустить напрямую /path/to/php56 ./yii migrate
3) Заменить в начале файла ./yii ссылку на php на правильную, к php56
Выполните: php -v
Возможно вас ожидает сюрприз.
В любом случае - php выполняемый через apache и из консоли могут отличаться.
Ваш конфиг для консольного php лежит в /etc/php/7.0/cli
Видимо надо array_key_exists('mod'.$i, $all_fieds) заменить на array_key_exists('mod'.$i, $all_fieds) and ($all_fieds{'mod'.$i}...) вместо ... надо что-то дописать, в зависимости от структуры вашего массива, например $all_fieds{'mod'.$i}{'id'} != '' или другой отличительный признак проверить.
Цикл прокрутится 5 раз, но array_key_exists('mod'.$i, $all_fieds) выполнит условие if только если ключ modN существует. Если в массиве есть только mod3, то будет выведен только один блок.
Не стоит примешивать RGBQUAD туда куда не надо, читабельность кода страдает.
Просто массив unsigned char из n элементов, где n = ((Width + 31) / 32 (нацело)) * 4
Про кратность строки - возможны варианты. Можно в начале посчитать сколько байт нужно дописать к каждой строке. Ширину вы знаете, сколько байт она займет тоже - Width / 8 (нацело) +1 (если есть еще остаток от деления).
Формула grayscale: unsigned char grayscale = (unsigned char)((r * 0.35) + (g * 0.54) + (b * 0.11));
Количество байт на строку: ((Width + 31) / 32 (нацело)) * 4
Если у вас есть еще что-то типа веб-сервера хостящегося дома, то тут уже надо думать и поднимать что-то типа nginx на маршрутизаторе и в зависимости от доменного имени перенаправлять трафик.
В любом случае, на обычный серфинг по сайтам ваша настройка никак не должна повлиять.