Php для начинающих. обработка ошибок

Для чего нужен PHP

Соби­рать стра­ни­цы из моду­лей. Если помни­те, PHP-код мож­но встра­и­вать в HTML-страницы, а мож­но сохра­нять как отдель­ные фай­лы. В этом слу­чае мы полу­ча­ем мини-модули, каж­дый из кото­рых отве­ча­ет за что-то одно. Напри­мер, в одном мы пишем, как будет выгля­деть шап­ка сай­та, в дру­гом — меню, тре­тий файл будет отве­чать за под­вал, чет­вёр­тый — за блок с отзы­ва­ми о това­рах.

<div>

<? include(«/includes/»); ?>

Тут можно вставить ссылку на модуль карточки товара или заполнить раздел информацией вручную. Но лучше модулем, как выше и ниже.

<? include(«/includes/»); ?>

</div>

PHP возь­мёт файл header.php, в кото­ром мы напи­са­ли, как долж­на выгля­деть шап­ка сай­та, и поста­вит её в нача­ло стра­ни­цы. То же самое сде­ла­ет и с под­ва­лом — фай­лом footer.php, и так будет на каж­дой стра­ни­це това­ра. Полу­ча­ет­ся, что нам не нуж­но писать один и тот же код шап­ки и под­ва­ла на каж­дой стра­ни­це, доста­точ­но сде­лать это в одном месте, а потом под­клю­чать одной строч­кой.

Созда­вать CMS и движ­ки для сай­тов. Такие модуль­ные воз­мож­но­сти PHP при­ве­ли к тому, что боль­шин­ство совре­мен­ных систем управ­ле­ния кон­тен­том на сай­тах напи­са­ны на PHP. Смот­ри­те сами:

Если вы на бес­плат­ном хостин­ге исполь­зу­е­те какой-то инстру­мент для созда­ния или под­держ­ки сай­та, ско­рее все­го, он тоже будет напи­сан на PHP.

Рабо­тать с фор­ма­ми и дан­ны­ми на стра­ни­це. HTML пло­хо уме­ет рабо­тать с фор­ма­ми и отправ­лять куда-то дан­ные, кото­рые вы вво­ди­те в поля реги­стра­ции. PHP справ­ля­ет­ся с этим гораз­до луч­ше: вы гово­ри­те, из како­го поля что нуж­но взять и по како­му адре­су отпра­вить, а всё осталь­ное интер­пре­та­тор дела­ет за вас.

Запо­ми­нать поль­зо­ва­те­лей и делать фор­мы авто­ри­за­ции. Если вам нуж­но быст­ро напи­сать свою фор­му реги­стра­ции на сай­те или запо­ми­нать посе­ти­те­лей даже без реги­стра­ции, то PHP — самый про­стой вари­ант реше­ния этой зада­чи. Един­ствен­ное, что нуж­но знать — как рабо­тать с база­ми дан­ных, где хра­нят­ся запи­си о поль­зо­ва­те­лях, пото­му что PHP это тоже уме­ет.

Защитить сайт от взлома

После удаления всех shell-скриптов и вредоносных вставок сайт обязательно надо защитить от взлома. Тогда он станет неуязвим для атак извне.

Защита панели администратора сайта по IP

Злоумышленники попадают на сайт, взламывая панель администратора. Чтобы помешать им, установите ограничение на вход в панель по IP. Иными словами, разрешите входить в панель администратора только с определённого устройства.

Добавьте в каталог административной панели (administrator, bitrix/admin, wp-admin…) файл .htaccess с содержимым:

Где 1.1.1.1 — IP-адрес, для которого разрешён доступ в админ панель.

Если IP-адрес не статический, можно добавить IP по зоне. Например, провайдер предоставляет IP-адрес вида 192.168.100.34. Тогда в .htaccess можно прописать allow from 192.168.

Защита панели администратора по HTTP-авторизации

Установите на админку сайта дополнительный логин и пароль. Для этого в каталог административной панели (administrator, bitrix/admin, wp-admin…) добавьте файлы .htaccess и .htpasswd .

В файле .htaccess нужно прописать такой код:

Где home/site.com/admin/.htpasswd — это полный путь к файлу .htpasswd вашего сервера.

В файле .htpasswd нужно прописать дополнительный логин и пароль, который будет использоваться при входе в панель.

Perl

Perl («пёрл»; в русском языке устоялось «перл») — язык программирования, основной особенностью которого считаются его богатые возможности для работы с текстом, в том числе реализованные при помощи регулярных выражений. Синтаксис Perl имеет много общего с синтаксисом языков C, Awk, sed и shell.

На нашем хостинге доступен perl версии 5, расположеный в .

Установка дополнительных модулей

fetch http://search.cpan.org/CPAN/authors/id/G/GE/GETTY/local-lib-1.006007.tar.gz
tar xf local-lib-1.006007.tar.gz
cd local-lib-1.006007

И далее установить его при помощи следующих команд:

perl Makefile.PL --bootstrap
make
make install

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

По умолчанию все модули устанавливаются в путь .

PHP

PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста») — язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. Получил большое распространение, особенно в применении к разработке web-приложений, благодаря своей простоте, скорости выполнения, богатой функциональности и распространению исходных кодов на основе лицензии PHP.

На нашем хостинге есть возможность использовать как интерпретатор PHP третей и четвертой версий, так и пятой (5.2 и 5.3).

По-умолчанию для интерпретации файлов с расширением php () используется php5, если вы хотите, чтобы они обрабатывались интерпретатором PHP версии 4, достаточно выбрать соответствующую опцию в разделе «Настройки сервера» административного интерфейса.

Также это можно сделать, создав файл в папке со следующими строками:

для apache 1.3:

AddHandler application/x-httpd-php .php

для apache 2.2:

AddHandler fcgid-script .php
FCGIWrapper /web/php .php

или

AddHandler fcgid-script .php
FCGIWrapper /web/php5 .php

или

AddHandler fcgid-script .php
FCGIWrapper /web/php53 .php

или

AddHandler fcgid-script .php
FCGIWrapper /web/php54 .php

или

AddHandler fcgid-script .php
FCGIWrapper /web/php55 .php

или

AddHandler fcgid-script .php
FCGIWrapper /web/php56 .php

или

AddHandler fcgid-script .php
FCGIWrapper /web/php70 .php

Следует учитывать, что файлы обрабатываются через интерпретатор, который указан в первой строке такого файла, вне зависимости от вышеупомянутой установки в файле .

Скрипты, имеющие расширение php4 или phtml, по-умолчанию выполняются интерпретатором PHP4, скрипты с расширением php5 — интерпретатором PHP версии 5, что также можно поменять при помощи файлов аналогичным образом.

Внимание: при использовании Apache 2.2 настройки в файле php.ini применяются через 5 минут.

Расположение:

  • php70:

  • php56:

  • php55:

  • php54:

  • php53:

  • php5:

  • php4:

  • php3:

Python

Python (пайтон, питон) — высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Питона минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.

На нашем хостинге доступен python версий 2.5, 2.6 и 3.1, расположеный в (2.5), (2.6) и (3.1).

Преимущественным методом считаем:

Альтернативный способ установки модулей

Для этого сначала нужно убедиться что в настройках distutils (который используется из setuptools) корректно указан путь для установки модулей.

Настройки хранятся в файле (). Этот файл (возможно его необходимо создать) должен содержать следующие строки (для установки модулей в ):

install_lib = ~/site/python
install_scripts = ~/bin

Вместо путей и здесь можно использовать любые другие пути внутри домашней папки.

Также как правило необходимо задать путь для поиска модулей python для скриптов. Сделать это можно просто в командной строке:

PYTHONPATH="${HOME}/site/python:${PYTHONPATH}" easy_install <модуль>

…либо через файлы (если используется оболочка bash), (sh) и для zsh. В этом случае в командной строке можно данный параметр не указывать.

Обратите внимание, что вышеуказаная команда установит модуль для python2.5, если нужно установить данный модуль для python2.6 то нужно заменть на (либо для версии 3.1).

Если нужно установить модуль с уже скачанного .tar.gz архива при помощи distutils, то достаточно вместо easy_install использовать python напрямую, например:

tar xf <модуль>.tar.gz
cd <модуль>
PYTHONPATH="${HOME}/site/python:${PYTHONPATH}" python setup.py install

тут можно заменить на или для использования python версий 2.6 или 3.1 соответственно.

Для новых акаунтов (после 08.2010) вышеуказаная переменныя (PYTHONPATH) и файл уже могут быть созданы по-умолчанию (с использованием пути ).

См.также раздел Django.

Первое свойство: интерпретируемость

Главная характеристика PHP — интерпретируемость. В отличие от Java, которая компилируется, а затем запускается в работу, PHP создается во время обращения к нему. Человек открывает сайт, на сервер посылается запрос, и в это время компилируется код. Каждый скрипт компилируется в реальном времени, а затем выполняется.

Приводим пример кода:

<?php /** * Класс для сохранения файлов, кроме изображений */ class Application {protected $_image = null; // файл, с которым нужно работать   /**  * метод сохраняет файл на диск  *  * string $path — путь к файлу новый  * srting $imagePath — путь старый  * boolean  */ public function saveFile($imagePath, $path){    $result = file_get_contents($imagePath, $path);    $nameDir = explode(‘/’,$path);    $newNameDir= ‘files/’.$nameDir.’/’.$nameDir.’/’.$nameDir;      mkdir($newNameDir, 0777, true);    $resultWrite = file_put_contents($path, $result);  return $resultWrite;  } }

Благодаря этому свойству PHP — очень гибкий язык. Например, Java-программист вводит название класса один раз — теперь оно неизменно. PHP же компилируется в  рантайме RuntimeСреда выполнения компьютерной программы. и можно подставить любое название класса из переменной.

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

Что делать, если вирусы обнаружены?

Когда проверка закончилась, и сервис говорит, что на вашем веб-сайте обнаружен вредоносный код, переживать не стоит. Наоборот, стоит обрадоваться, ведь теперь вы можете его устранить.

Поделюсь с вами советами, которые помогут это сделать быстро и качественно.

— Обычно все эти проверялки указывают на кусок кода, который надо удалить. Вам понадобится подключиться через ftp или покопаться в коде через админку, если используете WordPress или другой движок, предоставляющий такую возможность. Обычно удаления достаточно. После этого еще раз проверьте зараженный веб-сайт и убедитесь в том, что код удален корректно.

Немаловажно в этом случае проверить полную работоспособность сайта. Редактировать код следует лишь в том случае, если вы хорошо разбираетесь в вопросе

— Самый простой совет заключается в том, что вы можете обратиться в службу поддержки компании, которая предоставляет вам услугу веб-хостинга. Любой порядочный хостер должен хотя бы проконсультировать. Возможно, такая услуга может предоставляться в рамках расширенного обслуживания, за дополнительные деньги, но это все же лучше, чем привлекать экспертов со стороны, ведь в таком случае придется предоставить им полные доступы.

— Закажите услугу фрилансера на бирже Kwork, Weblancer или любой другой. Обычно опытные вебмастера с легкостью решают подобные вопросы, ведь по сути работа сводится к редактированию кусков кода. Но не всегда все так просто, поэтому вам может понадобиться услуга более опытного специалиста.

— А теперь самое главное. Если вирус имеет доступ к ftp, то, вполне возможно, что он заразил также и другие ваши веб-сайты, которые находятся на одном аккаунте. Придется проверять и их. Более того, умные вирусы поступают очень хитро. Например, они могут просто открыть какой-либо файл для записи, чего вы, разумеется, не заметите, а вернуться к нему только через неделю, когда вы уже будете думать, что удалили вредоносный код.

В этом случае следует изучать логи, то есть, смотреть, какие пользователи и роботы посещали ваш веб-сайт, и какие конкретно изменения вносили. В этом случае удаление может занять очень много времени.

Хочу также поделиться с вами немножко шуточным способом удаления вирусов, которые я иногда применяю для своих веб-сайтов на WordPress, вернее, применял ранее. Иногда борьба с вирусами требует не только времени, но и нервов. Представьте себе, на протяжении нескольких дней вы не можете понять, что к чему, копаетесь в коде, и, вроде бы, решение близко, но оно все никак не находится. Ситуация подобна к решению популярнейшего вопроса, почему Windows тормозит.

Так вот, и в случае с переустановкой операционной системы, и в случае с очищением веб-сайтов от вирусов я иногда применяю кардинальную схему. Если веб-сайт небольшой по размеру, я могу установить движок на другом сервере, вручную перенести файлы (изображения), заново установить нужную тему и плагины, а после этого подключаю базу данных.

На все про все уходит час-другой, и это намного быстрее, чем удалять вирусы, ведь всегда важен быстрый и надежный результат, а не способ его достижения. Касаемо Windows, иногда проще ее переустановить, чем заниматься чисткой реестра или установкой многочисленных программ.

Надеюсь, дорогие друзья, теперь вы понимаете, что проверить сайт на вирусы, даже не заходя на него, — задача достаточно простая. Гугл и Яндекс предоставят вам большое количество самых разных онлайн-сервисов. Но я все же рекомендую именно веб-сервисы, проверяющие ссылки. В этом случае вы осуществляете проверку в режиме реального времени и уж точно ничего не упустите.

На этом буду с вами прощаться. Прошу поделиться ссылкой на данный пост с друзьями или знакомыми, у которых есть свои веб-сайты. Как-то нет у нас, в среде вебмастеров, какой-то, гигиены, что ли. Сайт сделать умеем, а вот о безопасности не беспокоимся. Надеюсь, им, как и вам, эта статья будет полезной.

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

Жду ваших вопросов, мнений и комментариев.

Пока!

Ruby

Ruby (англ. «рубин», читается «руби») — интерпретируемый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» и многими другими возможностями.

На хостинге возможно использовать Ruby как сам по себе (), так и вместе с системой Ruby on Rails.

Установка дополнительных модулей gems

Установку можно произвести с использованием коммандной строки.

Нижеуказаные команды приведены для для интерпретаторов (оболочек, shell) совместимых с posix sh, если какие-либо из них не работают в другом shell-е, можно запустить bash просто набрав в командной строке, и попробовать выполнить аналогичные действия там.

Все переменные среды, указаные здесь, можно для удобства задать в файлах если используется оболочка bash, для sh, для zsh. Для новых акаунтов (после 08.2010) эти переменные там могут быть прописаны по-умолчанию (с использованием пути ).

В общем случае установить gem (в путь ) можно при помощи следующей команды:

GEM_HOME="$HOME/site/gems" GEM_PATH="$GEM_HOME:/usr/local/lib/ruby/gems/1.8/" CPATH=/usr/local/include RB_USER_INSTALL=true gem install <название>

Переменные среды GEM_HOME, GEM_PATH, CPATH и RB_USER_INSTALL можно задать в файлах инициализации оболочек (см.выше), либо при помощи команды (или для csh, tcsh) для использования на протяжении всей сессии (и не писать перед gem в дальнейшем). Например, для bash, sh или zsh и пути :

export GEM_HOME="$HOME/site/gems"
export GEM_PATH="$GEM_HOME:/usr/local/lib/ruby/gems/1.8/"
export CPATH=/usr/local/include RB_USER_INSTALL=true

После этого достаточно использовать просто для установки модуля gem.

Вместо пути для хранения gems можно использовать любой другой путь внутри домашней папки.

См.также раздел Ruby on Rails.

С чего начать изучение

PHP легко изучить самостоятельно за счет низкого порога входа. Буквально за вечер можно прочитать документацию и написать скрипт, который будет возвращать данные на сайт. Другие языки (C#, Java) имеют более высокий порог вхождения, и одного дня мало, чтобы создать работающий код. Сегодня на российском рынке труда из-за низкого порога входа PHP-кодеров много, и большинство — невысокого уровня.

PHP стабильно находится в топе популярных языков программирования, а в 2004 году получил звание «Язык года», несмотря на предсказания о его скорой смерти на всем пути развития.  Источник.

Хороший разработчик PHP фактически применяет те же паттерны программирования, что и в статически типизированных языках. На PHP даже сложнее программировать, и вот почему. Если в Java или C# допустить алгоритмическую ошибку, например, присвоить переменной не тот тип, — они «дадут по рукам». PHP же это пропустит, и программист сломает голову: что не так? Ведь все работает, но неправильно. Из-за этого на современном рынке хорошим программистам PHP готовы платить чек не ниже, чем другим разработчикам. Но хорошего специалиста сложно найти.

Чтобы учить язык, нужно задать себе вопрос: «Для чего он мне?» Учить ради процесса учебы — бесполезно, ведь без практического применения знания забудутся. Нужно поставить конкретную задачу и искать решение.

Начинайте изучать PHP в интернете: сегодня выпускается много видеоуроков, онлайн-лекций и тренажеров. Рекомендуем наш курс «PHP-разработчик», где вы прокачаете свой уровень с нулевого до профессионального.

Курс «PHP-разработчик»

Обширная программа для изучения PHP, состоящая из4 курсов. Поможет с нуля овладеть популярным языком программирования, устроиться в IT-компанию вашей мечты или стать независимым разработчиком.

  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

Мне кажется, дело не в языке, а в том, как на нем пишут

«Летом между 2 и 3 курсом я пошла искать работу — а в Новосибе того времени почти все вакансии для ребят без опыта были про PHP. Начинала с очень простых вещей — WordPress, Drupal… Потом писала бэкенды на Yii и много еще разного. Go впервые попробовала в 2014-м, вдохновившись докладом, и затем часто находила работу, связанную с разработкой на нем, через сообщество.
Считается, что Go гораздо проще поддерживать, чем PHP. Я не согласна. Видела очень много чистого, легко читаемого и поддерживаемого кода на PHP, а сейчас время от времени встречаю много плохо написанного кода на Go. Проблемы начинаются тогда, когда мы не следуем лучшим практикам языков и систем, которые разрабатываем… Или когда выбираем для своих задач не тот инструмент», — Елена Граховац, руководитель ПК GolangConf 2019 и соведущая подкаста GolangShow.

В эту субботу днем обсудим типичные ошибки выбора в стриме с Леной, Сашей Макаровым и другими замечательными людьми. Подключайтесь.

Смена версии PHP

1. Простой вариант

Для изменения версии php зайдите в панель управления для выбранного логина

https://cabinet.ur.ru/webadmin/srv_settings.cgi 

и выберите нужную версию.

Зайдите в домашнюю директорию

/web/_login_/

и переименуйте файл php.ini ( вы можете также его удалить )

mv /web/_login_/php.ini /web/_login_/php.ini.old 

Зайдите в редактор php.ini

https://cabinet.ur.ru/webadmin/phpinied.cgi

он автоматически вам создаст файл php.ini нужной версии.

Также вы можете скопировать нужный php.ini для выбранной версии php из

/usr/local/php*/etc/

соответственно.

ВНИМАНИЕ! Изменений в php.ini вступают в силу в течении 5 минут. Если вы хотите ускорить этот процесс вам необходимо отстрелить все запущенные php для вашего логина командой

ps ax | grep php
kill _id_

2. Работа разных версий PHP c одним конфигурационным файлом php.ini

Если вы хотите использовать разные версии php в рамках одного хостинга вам нужно
убедиться, что php.ini для выбранных версий совместимы, для этого зайдите по SSH и выполните следующие команды:

cd /web/_login_/

и запустите необходимую версию php из командной строки:

php5 -v  
php53 -v
php54 -v
php55 -v
php56 -v

Если он будет ругаться, то файл php.ini нужно заменить на соответствующий версии или удалить запрещенные директивы.

Лучше воспользоваться файлом от более свежих версий php ! так как старый php может работать с более новыми конфигами.

Конфигурационные файлы php.ini доступны:

/usr/local/php*/etc/

Вы можете скопировать себе:

cd /web/_login_
mv php.ini php.ini.old
cat /usr/local/etc/php56/etc/php.ini > php.ini
chmod 644 php.ini

После того как вы уверены, что php.ini совместим для выбранной версии вы можете указать в файле .htaccess
директивы с необходимой версией php

AddHandler fcgid-script .php
FCGIWrapper /web/php54 .php

3. Работа разных версий PHP с разными php.ini

Для работы разных версий PHP с разными php.ini вам нужно создать свои скрипты запуска fcgi,
воспользуйтесь SSH

cd /web/_login_

mkdir php52
mkdir php55
cat /web/php5 >> ./php52/php52
cat /web/php55 >> ./php55/php55
chmod 755 ./php52/php52
chmod 755 ./php55/php55

cp /usr/local/php52/etc/php.ini ./php52
cp /usr/local/php55/etc/php.ini ./php55

Дальше вам нужно отредактировать файлы:

 ./php52/php52
 ./php55/php55

заменив строку

PHPRC="/web/$USER"

на

PHPRC="/web/$USER/php52"
PHPRC="/web/$USER/php55"

соответственно.

Теперь, вы можете добавить в необходимый .htaccess

AddHandler fcgid-script .php
FCGIWrapper /web/_login_/php52/php52 .php

соответственно

AddHandler fcgid-script .php
FCGIWrapper /web/_login_/php55/php55 .php

Внимание: Для вступления в силу изменений ваших файлов php.ini необходимо будет отстреливать php процессы:

ps ax | grep php
kill _id_

Инспекции кода в PHPStorm

deep-assoc-completion

Место анализаторов в нашем QA

  • мы используем несколько видов автотестов;
  • у нас есть code review;
  • у нас есть ручное тестирование.
  • они могут покрыть 100% кода (в отличие от тестов, которые для каждого участка кода надо писать отдельно);
  • они часто отлавливают такие ошибки, которые сложно заметить в процессе code review;
  • они способны анализировать даже тот код, который сложно или невозможно запустить при ручном тестировании.
  • анализаторы работают для всего кода, а чтобы увидеть ошибки , нужно исполнить код;
  • ошибку анализатора можно исправить позже, если она не критична (возможно, это не лучшая практика, но в некоторых случаях это может быть полезно);
  • система типов в статических анализаторах даже более гибкая, чем в самом PHP (например, они поддерживают , которых нет в PHP);
  • статические анализаторы приближают нас к внедрению , поскольку они умеют эмулировать такие же строгие проверки.

Пишем простую ORM с возможностью смены БД на лету

  • Tutorial

Привет, Хабр! Карма слита из-за неосторожного комента под холиварной статьей, а значит нужно написать интересный (я надеюсь) пост и реабилитироваться. Я несколько лет пользуюсь серверным telegram клиентом на php

И как многие пользователи — устал от постоянного роста потребления памяти. Некоторые сессии могут занимать от 1 до 8 гигабайт RAM! Поддержка баз данных была уже давно обещана, но подвижек в этом направлении не было. Пришлось решать проблему самому 🙂 Популярность open source проекта, накладывала интересные требования на pull request:

  1. Обратная совместимость. Все существующие сессии должны продолжить работать в новой версии (сессия — это сериализованный инстанс приложения в файле);
  2. Свобода выбора БД. Возможность менять тип хранилища без потери данных и в любой момент, так как у пользователей разные конфигурации окружения;
  3. Расширяемость. Простота добавления новых типов баз данных;
  4. Сохранить интерфейс. Код приложения, работающий с данными, не должен меняться;
  5. Асинхронность. Проект использует amphp, поэтому все операции с базами должны быть неблокирующими;

За подробностями приглашаю всех под кат.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector