13 July, 2015

Запускаем PhpStorm 9.0 в Docker

Запускаем PhpStorm 9.0 на Oracle JDK 8 в Docker.

Тут все быстро, создаем Dockerfile

FROM nimmis/java:oracle-8-jdk 

ADD http://download.jetbrains.com/webide/PhpStorm-9.0.tar.gz /opt/PhpStorm-9.0.tar.gz
RUN tar xvf /opt/PhpStorm-9.0.tar.gz -C /opt/
RUN rm -fv /opt/PhpStorm-9.0.tar.gz

RUN apt-get update && apt-get install -y php5-cli x11-utils


# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
    mkdir -p /home/developer && \
    echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
    echo "developer:x:${uid}:" >> /etc/group && \
    echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
    chmod 0440 /etc/sudoers.d/developer && \
    chown ${uid}:${gid} -R /home/developer

USER developer
ENV HOME /home/developer
CMD /opt/PhpStorm-141.1912/bin/phpstorm.sh

Запускаем билд

docker build -t phpstorm . 

Запускаем PHPstorm

docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix phpstorm
24 June, 2015

Авторизация в Битрикс без пароля

Когда работаешь с большим количеством сайтов на 1С-Битрикс нередко возникает ситуация с отсутствием пароля администратора, но полным доступом к файлам и БД. Править пароль в БД это не наш путь т.к. придется еще тревожить заказчика и вынуждать его сменить пароль.

Самый простой вариант это авторизоваться с помощью вот такого нехитрого скрипта:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

global $USER;
if($USER->Authorize(1)) {
    unlink(__FILE__);
    LocalRedirect('/bitrix/');
} else {
    echo 'Ваша задумка не увенчалась успехом.';
}

Здесь мы авторизуемся под пользователем с id 1 (обычно это администратор сайта) и сразу попадаем в панель управления.

В случае успеха скрипт сам себя удаляет.

Сделано это с учетом того что большинство клиентских сайтов содержат в корне сайта кучу забытых разработчиками потенциально интересных для злоумышленников вещей - дампы БД, архивы с файлами CMS и прочий трэш.

28 April, 2015

Как установить Win 2008 на Ubuntu-сервере?

Рецепт простой:

1) apt-get update

2) apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

3) wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/virtio-win-0.1-100.iso

4) virt-install --name=srv1 --ram=2000 --boot=cdrom,hd --disk=path=srv1hd,size=100,bus=virtio --disk path=virtio-win-0.1-100.iso,device=cdrom,perms=ro --cdrom=/home/archive_rescue/data/IsoImages/ru_windows_server_2008_r2.iso --os-type=windows --os-variant=win2k8 --graphics=vnc,password=123456 -w bridge:virbr0 --autostart

Потом пробрасываем VNC к себе на машину:

5) ssh -L 5900:localhost:5900 root@someserver.ru

6) Подключаемся к запущенной ВМ используя VNC-клиент. Адрес: localhost:5900

Рулить машиной через virsh

03 April, 2015

Как распаковывать архивы разных форматов в Linux

На самом деле нет нужды заморачиваться вспоминая что сейчас нужно - tar zxf или tar jxf для конкретного случая (tar.gz и tar.bz).

Самый простой вариант это писать:

tar xf archivename

Утилита tar выберет нужный распаковщик автоматом.

Еще заодно напомню про команду file которая пытается определить тип указанного в аргументах файла. Очень полезная утилита на самом деле.

03 April, 2015

Подменяем время на PHP

Возникают такие случаи когда во время разработки на PHP необходима возможность подмены времени. Можно конечно перевести часы в системе, но я бы так не рекомендовал делать ибо такое действие влечет за собой кучу проблем. А виртуальные сервера у некоторых хостеров могут и вовсе не грузиться после принудительной смены времени.

Так что самый безопасный способ это переопределение встроеных в PHP функций. Да, патчить и компилировать PHP мы не будем =)

Мы просто возьмем отсюда модуль PHP-TimeCop и установим его согласно приложенной инструкции.

После всех этих манипуляций нам остается только вызвать в начале скрипта вот такую функцию

$mytime = time()-86400;

timecop_freeze($mytime);

Таким образом мы зафиксировали в скрипте время ровно на сутки назад. Для удобства небольшой скрипт с этими двумя строчками можно подключать ко всем скриптам через директиву auto_prepend_file в .htaccess

Новые записи →Home← Старые записи