Ответы пользователя по тегу PHP
  • Как научится настраивать web-сервер под Linux?

    Stdit
    @Stdit
    Эксперименты и обучение лучше всего проводить в виртуальной машине (я делал именно так). Поставьте например VirtualBox, установите туда CentOS (для этого надо скачать iso установочного диска, вставить его в виртуальный привод и загрузить виртуалку с него, установщик интерактивный и трудностей не вызывает, после установки обычно сразу всё работает. Возможно протребуется проброс портов, это делается через меню виртуалки по правому клику, например для работы через программу-терминал нужно пробросить порт 22, а для открытия сайта из виртуали в браузере — порт 80. Пробрасывать можно и на другой порт хоста, например 8080, если вдруг у вас например свой девелоперский апач там уже висит). Во время установки можно сразу выбрать пакеты софта, но чтобы научиться ставить софт и управлять сервером, лучше не выбирать ничего.

    Установить всё веб-добро через yum не представляет никаких трудностей, начать можно с команды «yum help». Разве что, возможно, потребуется установка некоторых дополнительных репозиториев (epel, remi, centalt, об этом много написано и легко гуглится). В большинстве случаев хватает поиска по репозиториям (yum list php*) и установки того, что нужно через yum install, а так же запуска через «service название start». Автозапуском установленных служб можно управлять через chkconfig, например «chkconfig mysqld off». (конечно, базовые консольные команды, по управлению файлами и правами, такие как cat, cp, mv, rm, chmod, chown, ls, mkdir, find и т.д. — нужно знать, если этих знаний тоже нет лучше начать именно с них, ещё могут потребоваться знания в управлении фаерволлом iptables, но для начала его можно выключить,«service iptables stop»).

    Конфиги установленных сервисов будут лежать в большинстве случаев в директории /etc/названиесофта. Конфигурирование каждого становленного пакета может оказаться уже не столь тривиальной задачей, у каждого будут свои нюансы, и потребуется поискать соответствующую информацию от комментариев в конфиге до тематических форумов. Модули для php ставятся через «yum php-pecl-название nistall» или через pecl (см «pecl help»). Соответственно, для pear — «pear help».

    Это базовая информация, которой мне в своё время очень не хватало для облегчения «старта». Надеюсь, она вам пригодится.
    Ответ написан
  • PHPstorm, ssh и апдейты

    Stdit
    @Stdit
    Я для этого локально поставил git. В Project Settings настроил раздел Deployment (в том числе автоматический аплоад в опциях). Таким образом, после git pull, файлы автоматически синхронизируются на виртуальную машину с серверным софтом. То же самое происходит при изменении и создании новых файлов и папок проекта. Прогресс можно мониторить в окне «File Transfer».
    Ответ написан
    4 комментария
  • Типизированные Request и Response

    Stdit
    @Stdit
    На мой взгляд — не имеет смысла, реквест должен описывать только логику HTTP и не должен ничего знать о конкретике передаваемых в нём данных. Валидировать запрос должен валидатор после раутинга.
    Ответ написан
    1 комментарий
  • File_get_contents не получает страницу полностью?

    Stdit
    @Stdit
    Сервер отдаёт только первый чанк, видимо криво настроен. Её в текстовой форме не может скачать ни curl, ни wget. Браузер получает полную страницу потому, что использует gzip. Чтобы получить полную страницу через gzip на php, надо сделать что-то такое:
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://nightout.ru/photoreport/alpen-grotte/after-party-zolotoi-sostav-0?page=0');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip'));
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    echo gzinflate(substr($result,10));
    
    Ответ написан
    3 комментария
  • Как уникализировать массив ссылок на объекты по самим ссылкам, а не по значению объектов?

    Stdit
    @Stdit
    $s = new SplObjectStorage();
    $o1 = new StdClass;
    $o1->a = 1;
    $o2 = new StdClass;
    $o2->a = 1;
    $o3 = new StdClass;
    $o3->b = 3;
    $s->attach($o1);
    $s->attach($o2);
    $s->attach($o1);
    $s->attach($o3);
    var_dump(iterator_to_array($s));
    
    array(3) {
      [0]=>
      object(stdClass)#2 (1) {
        ["a"]=>
        int(1)
      }
      [1]=>
      object(stdClass)#3 (1) {
        ["a"]=>
        int(1)
      }
      [2]=>
      object(stdClass)#4 (1) {
        ["b"]=>
        int(3)
      }
    
    
    Ответ написан
    Комментировать
  • Проблема с производительностью сайта

    Stdit
    @Stdit
    Включите логгинг длинных запросов. Иногда такие проблемы решаются установкой правильного индекса и/или mysql кеша.
    Ответ написан
    Комментировать
  • CMS своими руками

    Stdit
    @Stdit
    Написание CMS — это огромная работа. Ничего плохого нет в том, чтобы попробовать самому написать CMS в образовательных целях, это лучший способ изучить на практике проектирование и получить опыт, который поможет в дальнейшем понимать готовые CMS и писать на них нормальный код. Прежде чем писать CMS, нужно написать Framework для неё. Можно начать с изучения готовых решений, например Symfony2. Перед практикой обязательно изучение теории, паттернов проектирования, способов оптимизации и т.д. Не стоит рисковать применять свою CMS на боевых сайтах и серверах, потому что почти наверняка в ней будут уязвимости и архитектурные ошибки, которые в дальнейшем создадут вам или коллегам немало проблем.
    Ответ написан
    2 комментария
  • Объявление переменной в PHP

    Stdit
    @Stdit
    PHP — это не JS. «var» — это старый способ объявления полей класса (ныне следует использовать private, protected, public). И, кстати, оно гуглится.
    Ответ написан
    1 комментарий
  • Нужна помощь в составлении регулярного выражения?

    Stdit
    @Stdit
    preg_match_all("~([^|,]+)\|([^,]+)~","string|name1,value1|name2,value2|name3",$m);var_dump($m);
    
      [1]=>
      array(3) {
        [0]=>
        string(6) "string"
        [1]=>
        string(6) "value1"
        [2]=>
        string(6) "value2"
      }
      [2]=>
      array(3) {
        [0]=>
        string(5) "name1"
        [1]=>
        string(5) "name2"
        [2]=>
        string(5) "name3"
      }
    Ответ написан
    2 комментария
  • Конвертация SVG в растр

    Stdit
    @Stdit
    Ответ написан
    Комментировать