Использование PHP из командной строки

Начиная с версии 4.3, РНР поддерживает новый SAPI-тип (Server Application Programming Interface) под названием CLI, что означает Command Line Interface. Как следует из названия, главной задачей этого SAPI-типа является разработка оболочки/shell (или рабочего стола) приложений с помощью РНР. Имеются весьма небольшие отличия CLI SAPI от других SAPI, которые будут далее рассмотрены в этой главе. CLI SAPI был выпущен в первый раз с PHP 4.2.0, но тогда это был эксперимент, и нужно было явно включать его командой –enable-cli при запуске ./configure. Начиная с PHP 4.3.0, CLI SAPI больше не является экспериментальным и всегда встроен и устанавливается как двоичный исполняемый файл php (называется php.exe в Windows). Существенные отличия CLI SAPI от других SAPI: В отличие от CGI SAPI, никакие шапки/headers не записываются в вывод.Хотя в CGI SAPI имеется способ подавления HTTP-шапок, эквивалентного переключателя для их включения в CLI SAPI нет. Имеются определённые директивы php.ini, которые переопределены в CLI SAPI, поскольку они не имеют смысла в среде окружения оболочки: Таблица 24-1. Переопределение php.ini-директив Директива CLI SAPI- значение по умолчанию Комментарий html_errors FALSE Бывает довольно сложно прочитать в оболочке сообщение об ошибке, наполненное всеми этими бессмысленными HTML-тэгами, поэтому по умолчанию значение этой директивы FALSE. implicit_flush TRUE Желательно, чтобы любой вывод из print(), echo() и компании немедленно записывался в вывод, а не отправлялся в какой-нибудь буфер. Вы всё ещё можете пользоваться буферизацией вывода, если хотите поработать со стандартным выводом. max_execution_time 0 (unlimited) Из-за бесконечно больших возможностей использования PHP в среде окружения оболочки, максимальное время выполнения не ограничено. В то время как приложения, написанные для web, […]

Read more

Оптимизация изображений средствами командной строки Linux

Иногда возникает такая необходимость — сделать что-то с целой кучей изображений, чаще всего — сжать, чтобы не занимали много места. Есть много разных редакторов — Photoshop, Lightroom и им подобных. Кроме того, появилось уже очень много всяких онлайн сервисов, которые позволяют сжимать и оптимизировать картинки. Если этих картинок с десяток, то можно обойтись каким-нибудь сервисом. А вот если их больше, на помощь приходят консольные утилиты. Одни из таких ImageMagick, jpegoptim, optipng ImageMagick представляет из себя кроссплатформенный набор утилит, который содержит очень много функций для работы с изображениями — конвертирование из одного формата в другой, различные трансформации (ресайз, обрезка, вращение, зеркальное отражение), применение разных эффектов, вроде размытия… и очень много других. Jpegoptim и optipng позволяют сжать изображение без потери качества, а для jpegoptim также возможно сжатие с потерями. Примеры с ImageMagick Поиск и ресайз всех изображений до 500px Для одного файла:

Для нескольких изображений можно использовать такую магию:

Разместить маленькое изображение внутри белого квадрата, заданного размера

Создание пиктограмм 80×80

Примеры с jpegoptim и optipng.

В этом режиме удаляется вся мета-информация, кроме Exif и комментариев. По-умолчанию используется алгоритм сжатия без потери качества Сжатие с потерями, удаление всей мета-информации:

Для оптимизирования всех png изображений можно использовать следующую команду

где -o может быть от -o0 до -o7 Чем выше этот параметр, тем больше фильтров будет использовано для оптимизации. Размер будет меньше, но и обрабатываться каждое изображение будет дольше. В принципе, это весь необходимый минимум чтобы оптимизировать тонну картинок для быстрой загрузки сайтов и экономии места на хостингах. […]

Read more

Команды Linux для командной строки

Недавно, настраивая Linux вдруг понял, что не вызов команды настройки операционной системы в текстовом режиме. А пользуюсь *nix уже много лет… Как-то настраивал я в основном правя конфигурационные файлы в ручную и устанавливая программы с помощью команды aptitude или apt-get… Поэтому, решил несколько закрепить знания по командам из текстовой строки. Пошуршал по Google и нашёл на странице http://bit.pirit.info/forum/viewtopic.php?p=13263 ряд команд: login – запрос от пользователя имени и пароля (запрос от системы к пользователю) для входа в систему( по умолчанию, при наборе пароля, он не отображается). logout – выход из текущего сеанса оболочки. startx – команда для запуска графического интерфейса X Window. shutdown – останавливает систему и предотвращает повреждение файловой системы при этом, но,используется только при работе в консольном режиме.При работе в режиме X Window, не используйте. halt(poweroff) – быстрое и корректное выключение системы. reboot – корректное выключение с последущей загрузкой.Перезагрузка. vmstat – выдаёт сведения о процессах, памяти и загруженности центрального процессора. su – вход в сеанс администратора, но прийдётся ввести пароль.Для выхода из этого сеанса наберите exit и нажмите ENTER. apropos – поиск строки в заголовках и названиях документации ( дополнительно вводится слово для поиска). Выдаёт список всего найденного. cal – форматированный календарь на текущий месяц ( добавить y и будет календарь на весь текущий год). date – отображает текущие дату и время, по системным часам ядра. oclock – простые часы, которые висят на рабочем столе (много дополнительных параметров). finger – отображение информации о пользователе, имя которого указано в команде. hostname – команда отображает идентификатор данного узла сети ( его […]

Read more

Рекурсивная установка прав в Linux

Автор: Рудюк С . А. https://corp2.net E-Mail: rs@corp2.net Долгое время я пользовался достаточно длительным путём установки прав на файлы и папки: входил в mc, делал поиск по всему проекту, потом выделял все найденные файлы и папки и указывал владельцев, потом снова выделял и указывал права доступа. Нужно признать, что данный способ был достаточно длительным, если проект большой. Но, есть стандартные команды с помощью которых можно быстро установить рекурсивно права. Например: chown -R www-data web – установка рекурсивно прав для папки web. Владельцем делается пользователь www-data. chgrp -R www-data web – установка рекурсивно прав для папки web. Владельцем делается группа www-data. chmod -R g+rws web – указываются рекурсивно атрибуты доступа. Автор: Рудюк С . А. https://corp2.net

Read more

Определение версии операционной системы Linux Ubuntu

  Linux smicro 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux Команда lsb_release предназначена для вывода информации о текущей версии дистрибутива Ubuntu. Чтобы получить требуемую информацию, выполните в командной строке команду lsb_release -a:

Так же информация о версии Ubuntu хранится в файле /etc/lsb-release. Чтобы вывести файл, выполните в командной строке команду cat /etc/lsb-release:

Есть еще один простой способ определить версию, это просмотреть содержимое файла /etc/issue, хотя сам файл предназначен несколько для других целей. Для этого в командной строке выполните:

Read more

Определение конфигурации компьютера в Linux Ubuntu из командной строки

Часто возникает необходимость определения конфигурации сервера в операционной системе Linux. Но, как правило, если Вы администрируете сервер удалённо, графический интерфейс не доступен и Вы не можете воспользоваться командами, которые выводят информацию в графическом режиме. Но, есть утилиты для определения конфигурации в текстовом режиме (в текстовой консоли): procinfo lshw linuxinfo hardinfo Пример применения команд: procinfo Linux 2.6.24-22-generic (buildd@crested) (gcc 4.2.3 ) #1 8CPU [rudjuk-desktop] Memory: Total Used Free Shared Buffers Mem: 2062476 2019468 43008 0 134800 Swap: 6040400 270980 5769420 Bootup: Sat Dec 20 00:06:56 2008 Load average: 1.08 0.96 0.66 1/336 5351 user : 20d 17:24:25.93 3.9% page in :1285028569 disk 1: 20244634r31006476w nice : 2d 11:20:05.79 0.4% page out:915940616 disk 2: 37679794r 6660305w system: 6d 8:26:41.75 1.2% page act:103450183 IOwait: 3d 6:40:33.10 0.6% page dea: 72753546 hw irq: 0:10:58.72 0.0% page flt:2987162550 sw irq: 2:20:49.97 0.0% swap in : 8133289 idle : 498d 11939:715874:42949679.40 94.6% swap out: 7793347 uptime: 65d 19:45:12.16 context :2377398960 irq 0: 124 timer irq 9: 0 acpi irq 1: 2 i8042 irq 14: 2260396 libata irq 3: 3 irq 15: 0 libata irq 4: 2 irq 16: 0 uhci_hcd:usb4 irq 6: 5 floppy [2] irq 17: 0 uhci_hcd:usb1, ehci_ irq 7: 0 parport0 [3] irq 18: 0 uhci_hcd:usb3 irq 8: 1 rtc irq 19: 95536513 uhci_hcd:usb2, libat lshw rudjuk-desktop description: Computer product: X7DVL vendor: Supermicro version: 0123456789 serial: 0123456789 width: 32 bits capabilities: smbios-2.4 dmi-2.4 smp-1.4 smp configuration: administrator_password=disabled boot=oem-specific cpus=7 frontpanel_password=unknown keyboard_password=unknown power-on_password=disabled uuid=53D19F64-D663-A017-8922-00304889D572 *-core description: Motherboard product: X7DVL vendor: Supermicro physical id: 0 […]

Read more

Программы для Linux

Нашел список программ для Linux на сайте http://www.linuxsoft.ru/info/lib/lib/distr/progr.htm может пригодится. Составитель Андрей Ракитин. 3Dwm – трехмерный оконный менеджер. 3DStats – профессиональная real-time система контроля за сайтом. Предоставляет множество отчетов. Удобный интерфейс. Имеет систему архива данных. Производит построение 3D графиков. 5pstats – ведет статистику использования pppd. Предоставляет отчеты в HTML виде. Хранит данные в MySQL database. a2ps – программа, преобразующая текст в PostScript для вывода на принтер. Позволяет управлять форматами, выделениями и т.п. AbiWord – кросс-платформенный текстовый процессор. ACID-XML – приложение, предоставляющее красивый формат XML-логов системы обнаружения вторжений Snort. ActivePerl – дистрибутив Perl. Скомпилирован для платформ Windows, Linux и Solaris. Включает PPM (Perl Package Manager) и Installer для каждой платформы. ACUA – пакет программ для облегчения администрации учетных записей пользователей и осуществления ограничений доступа. Отличное применение для создания модемных пулов (ISPs, BBSs). adagio – пакет проигрывателей аудио файлов MIDI adjtimex Adobe Acrobat – просмотрщик PDF-файлов под Linux, UNIX и Windows 9x/NT/2000. ADSL4Linux – программа для упрощения установки ADSL модемов под Linux. AGIL – клон Sierra’s Adventure Game Interpreter для запуска таких игр, как Space Quest, King’s Quest, Leisure Suit Larry. AGNULA – сокращение от A GNU/Linux Audio distribution – музыкальный дистрибутив Linux. Проект проводится под эгидой Европейской комиссии при участии множества крупных научных, общественных и коммерческих организаций, включая французский институт акустических исследований IRCAM, Фонд свободного ПО (Free Software Foundation) и компанию Red Hat. AfterStep – графическая среда. Основана на популярном оконном менеджере fvwm. Настройка параметров производится редактированием файла конфигурации обычным текстовым редактором. AfterStep-APPS AIDE – (Advanced Intrusion Detection Environment) свободно распространяемая […]

Read more

Отправка писем из консоли linux

Чтобы отослать электронное письмо из командной строки, можно воспользоваться утилитой mail. Также она может встречаться под названием mailx или Mail. Для отправки письма пишем следующую команду: $ mail -s “Тема письма” pupkin@mail.ru Привет! Я пишу тебе из консоли! Ctrl+D Комбинация клавиш Ctrl+D (^D) с новой строки позволяет завершить ввод письма. После этого у меня появляется приглашение ввести получателя копии – просто жму “Enter”, и письмо отправляется. Если тело письма находится в файле, то можно просто воспользоваться перенаправлением входного потока: $ mail -s “Письмо из файла” pupkin@mail.ru < mail_body.txt Аналогично поступаем, если требуется отослать вывод какой-либо команды. Например, следующая команда отошлет мне на мыло содержание текущего каталога: $ ls | mail -s “Вывод команды” pupkin@mail.ru Кроме того, утилита позволяет не только читать письма, но и получать их, отвечать и делать прочие полезные манипуляции. Но вот чего она, похоже, не позволяет – так это добавить вложение к письму. Однако, это не беда. Есть немало способов отправить файл из консоли по электронной почте. Я рассмотрю три из них, которые не потребовали от меня разбираться в чем-то или что-то скачивать/устанавливать. 1. Если нужно отправить двоичный файл письмом, можно его просто закодировать с помощью uuencode. Команда будет выглядет следующим образом: $ uuencode image.jpg image.jpg | mail -s “Метод 1” sombeody@somewhere.net И хотя файл действительно закодируется и отправится, это не является вложением в полном смысле электронной почты. некоторые почтовые клиенты адэкватно отреагируют на файл в письме, другие же покажут его как простой текст, и раскодировать его придется вручную. 2. С помощью консольной утилиты mpack. Эта утилита […]

Read more

Программирование в командной строке используя PHP

Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash’e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо. Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь. Проверка прав доступа Наверное, ни для кого не секрет, что достаточно просто в первой строке PHP скрипта написать #!/usr/bin/env php и такой скрипт можно будет выполнить как обычную программу в Linux. Прежде всего, нам нужно проверить, есть ли у нас право на запись в ту самую папку, которая содержит в себе конфиги виртуальных хостов, а обычно для этого нужны root права. Проверить это довольно просто: $virtual_hosts_dir = “/etc/apache2/sites-available/”; if (!is_dir($virtual_hosts_dir) || !is_writable($virtual_hosts_dir)) {     echo “You must run this script as root!\n“;     exit; }   Получение информации из параметров Далее, нам необходимо узнать у пользователя некоторую информацию, которая нам нужна для создания конфига. Кроме последовательного ввода из консоли, можно передать эту информацию в качестве параметров, которые мы передаем при вызове скрипта. В PHP есть глобальные переменные $argc и $argv. Первая содержит количество входящих параметров, а вторая — массив со входящими параметрами. По-умолчанию входящий параметр всего один — полный путь к […]

Read more