Php для начинающих. обработка ошибок
Содержание:
- Для чего нужен PHP
- Защитить сайт от взлома
- Perl
- PHP
- Python
- Первое свойство: интерпретируемость
- Что делать, если вирусы обнаружены?
- Ruby
- С чего начать изучение
- Мне кажется, дело не в языке, а в том, как на нем пишут
- Смена версии PHP
- Инспекции кода в PHPStorm
- Место анализаторов в нашем QA
- Пишем простую ORM с возможностью смены БД на лету
Для чего нужен 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:
- Обратная совместимость. Все существующие сессии должны продолжить работать в новой версии (сессия — это сериализованный инстанс приложения в файле);
- Свобода выбора БД. Возможность менять тип хранилища без потери данных и в любой момент, так как у пользователей разные конфигурации окружения;
- Расширяемость. Простота добавления новых типов баз данных;
- Сохранить интерфейс. Код приложения, работающий с данными, не должен меняться;
- Асинхронность. Проект использует amphp, поэтому все операции с базами должны быть неблокирующими;
За подробностями приглашаю всех под кат.