Работа с PHP-скриптами в командной строке | REG.RU

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

По умолчанию php скрипты запускаются под «системной» сборкой php (5.3), например:

-bash-4.1$ php www/mysite.ru/info.php
phpinfo()
PHP Version => 5.3.3
...

Соответственно, команда php -v покажет информацию о «системной» сборке php, а не той, что активирована в панели управления хостингом:

-bash-4.1$ php -v

PHP 5.3.3 (cli) (built: Jul  9 2015 17:39:00)

Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
    with the ionCube PHP Loader v4.2.2, Copyright (c) 2002-2012, by ionCube Ltd., and
    with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies

Сборки php, которые вам доступны в панели управления хостингом, расположены в /opt/php:

-bash-4.
1$ ls /opt/php 5.1 5.4-with-xcache 7.1 7.4 5.2 5.5 7.1-bx-optimized 7.4-bx-optimized 5.3 5.5-bx-optimized 7.2 8.0 5.3-bx-optimized 5.6 7.2-bx-optimized 8.1 5.3-with-xcache 5.6-bx-optimized 7.2-umi 8.1-ioncube 5.4 7.0 7.3 5.4-bx-optimized2 7.0-bx-optimized 7.3-bx-optimized

Обратите внимание: скрипты можно запускать и через php, и через php-cgi. Например:

  • /opt/php/5.4-with-xcache/bin/php-cgi
  • /opt/php/5.4-with-xcache/bin/php

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

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

/opt/php/5.5/bin/php www/mysite.ru/info.php

где:

  • /opt/php/5.5/bin/php — путь к обработчику;
  • www/mysite. ru/info.php — путь к скрипту.

на примере phpinfo

-bash-4.1$ /opt/php/5.5/bin/php www/mysite.ru/info.php

X-Powered-By: PHP/5.5.23
Content-type: text/html
...

видно, что скрипт запустился под php 5.5.

Аналогичным образом можно запустить скрипт под любой другой доступной сборкой php:

  • /opt/php/4.4.9/bin/php
  • /opt/php/5.1/bin/php
  • /opt/php/5.2/bin/php
  • /opt/php/5.3/bin/php
  • /opt/php/5.3-bx-optimized/bin/php
  • /opt/php/5.3-with-xcache/bin/php
  • /opt/php/5.4/bin/php
  • /opt/php/5.4-bx-optimized/bin/php
  • /opt/php/5.4-bx-optimized2/bin/php
  • /opt/php/5.4-with-xcache/bin/php
  • /opt/php/5.5/bin/php
  • /opt/php/5.5-bx-optimized/bin/php
  • /opt/php/5.6/bin/php
  • /opt/php/5.
    6-bx-optimized/bin/php
  • /opt/php/7.0/bin/php
  • /opt/php/7.0-bx-optimized/bin/php
  • /opt/php/7.1/bin/php

Узнать подробную информацию о сборке php можно при помощи команды:

/opt/php/.../bin/php -i


# Узнать список доступных модулей: 
/opt/php/.../bin/php -m
Помогла ли вам статья?

Да

раз уже
помогла

Настройка веб-сервера Nginx + PHP-FPM + MySQL — Документация docs.cs-cart.ru 4.3.x

Предыдущая статья Следующая статья

Быстрая установка и настройка веб-сервера NginX для работы CS-Cart.

Если вы в первый раз настраиваете VPS сервер, то рекомендуем начать с изучения с более детальной инструкции: Настройка веб-сервера Apache.

Видео

Сервер и ресурсы

Для инструкции арендован самый простой VPS сервер.

Обычно VPS сервер предоставляется с чистой операционной системой, мы выбрали последнюю версию Ubuntu 14.04 LTS x86 на данный момент.

Технические характеристики сервера:

ОСUbuntu 14.04 LTS x86
Диск2.0 ГБ
Процессор
2000 МГц
Память128 МБ

Подсказка

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

Предупреждение

Предупреждение! Настройку сервера для живого интернет-магазина необходимо доверить профессионалам.

Данная инструкция может быть использована для тестовых интернет-магазинов.

1. Подключаемся к серверу по SSH

Используем терминал (PuTTY).

2. Обновим список пакетов

Запустите в терминале (PuTTY) команду:

sudo apt-get update -y

3. Устанавливаем NginX

Наша команда:

sudo apt-get install nginx -y

4.

Останавливаем Nginx

Остановим NginX на время настройки простой командой:

sudo service nginx stop

5. Узнаем количество процессоров в системе

Количество процессоров нам понадобится для конфигурации NginX:

cat /proc/cpuinfo | grep processor | wc -l

Запоминаем число процессоров.

6. Установим число процессов Nginx

Найдите на сервере и откройте для редактирования файл:

/etc/nginx/nginx.conf

Найдите строчку

worker_processes  4;

Установите для неё значение равное числу процессоров. В нашем случае один процессор.

Стало:

worker_processes  1;

Сохраняем.

7. Создадим папку для интернет-магазина

Простая команда:

mkdir -p /var/www/html/example.com

Важно

В примерах команд и в конфигурационном файле мы будем использовать example.com. Замените его на имя своего домена, например, dbazhenov.ru.

8. Конфигурация Nginx

Нам необходимо настроить конфигурацию NginX.

Сделаем так, чтобы Nginx понимал наш домен и отправлял его в нужную папку на сервере, а также установим правила для SEO.

Найдите на сервере и откройте файл:

/etc/nginx/sites-available/default

Удалите весь код и вставьте новый. Ниже будет код, в комментариях кратко описано происходящее. Вам нужно заменить домен example.com на ваш домен

#######################################################################
# Описание и конфигурация основного домена для интернет-магазина
#######################################################################
server {
    listen  80;
    #   Домен интернет-магазина
    server_name example.com;
    ############################################################################
    #   Кодировка по умолчанию
    charset utf-8;
    ############################################################################
    #   Основной каталог интернет-магазина
    root /var/www/html/example.com;
    index  index.php index.
html index.htm; ############################################################################ # Сжатие gzip on; gzip_disable "msie6"; gzip_comp_level 6; gzip_min_length 1100; gzip_buffers 16 8k; gzip_proxied any; gzip_types text/plain application/xml application/javascript text/css text/js text/xml application/x-javascript text/javascript application/json application/xml+rss; ############################################################################ # Прочие настройки client_max_body_size 100m; client_body_buffer_size 128k; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; client_header_buffer_size 1k; large_client_header_buffers 4 16k; ############################################################################ access_log /var/log/nginx/example.com_access.log combined; error_log /var/log/nginx/example.
com_error.log; ############################################################################ error_page 598 = @backend; ############################################################################ location @backend { try_files $uri $uri/ /$2$3 /$3 /index.php =404; # Путь к сокету PHP-FPM fastcgi_pass unix:/var/run/php5-fpm.sock; # fastcgi_index index.php; fastcgi_read_timeout 360; # Добавляем содержимое fastcgi_params.conf ################################################################################ fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.
/(\w+/)?(\w+/)?init.php { return 404; } location ~* \.(tpl.?)$ { return 404; } location ~ /\.(ht|git) { return 404; } location ~* \.php$ { return 598 ; } ################################################################################ }

9. Перезапускаем nginx

Опять терминал:

sudo service nginx restart

10. Устанавливаем PHP-FPM

Одной командой:

sudo apt-get install php5-fpm php5-mysql php5-curl php5-gd php-mail -y

Можете установить любую версию PHP, соответствующую системным требованиям. Но в этом случае придется поменять конфигурацию nginx (/etc/nginx/sites-available/default) соответствующим образом. Например, если вы устанавливаете PHP7-FPM, вам придётся заменить путь к сокету PHP-FPM на /var/run/php/php7.0-fpm.sock.

11. Установим MySQL

Команда для установки MySQL:

sudo apt-get install mysql-server -y

В процессе установки вам потребуется несколько раз ввести пароль. Не потеряйте пароль!

12. Установим PhpMyAdmin

Ещё одной командой установим PhpMyAdmin для удобства работы с базой данных:

sudo apt-get install phpmyadmin -y

Потребуется ввести пароль от MySQL.

Консоль попросит вас выбрать Apache2 или lighttpd во время установки, пропустите данный шаг, просто нажмите ENTER

13. Добавим конфигурацию Nginx для PhpMyAdmin

Сделаем так, чтобы PhpMyAdmin открывался на отдельном поддомене: pma.example.com. Нам необходимо добавить в конфигурацию nginx новый раздел для поддомена.

Откройте на сервере файл:

/etc/nginx/sites-available/default

В конец файла добавьте конфигурацию для поддомена, который будет ссылаться на phpmyadmin. Просто скопируйте код в конец существующей конфигурации, замените example.com на ваш домен:

#######################################################################
# pma.example.com
#######################################################################
server {
    listen  80;
    #   Поддомен для phpmyadmin
    server_name pma. example.com www.pma.example.com;
    charset utf-8;
    #   Расположение логов
    access_log  /var/log/nginx/pma.example.com_access.log combined;
    error_log   /var/log/nginx/pma.example.com_error.log;
    #   Путь по которому будет ссылаться поддомен
    root /usr/share/phpmyadmin;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        root /usr/share/phpmyadmin;
        proxy_read_timeout 61;
        fastcgi_read_timeout 61;
        try_files $uri $uri/ =404;
        #   Путь к сокету PHP-FPM
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

14. Перезапускаем nginx

Вы уже знаете команду для перезагрузки nginx:

sudo service nginx restart

15. Всё! Устанавливаем CS-Cart

  • Скопируйте архив с CS-Cart в папку домена на новом сервере (/var/www/html/example. com).
  • Распакуйте архив
  • Установите нужные права на файлы и папки.
  • Создайте базу данных для интернет-магазина в PhpMyAdmin
  • Завершите установку в бразере: Установка в браузере

Больше информации

Предотвращение раскрытия переменных X-PHP-Script

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

Логика этого ясна. Так много приложений PHP с открытым исходным кодом иметь дыры в безопасности, позволяющие отправлять электронные письма, которые стали необходимыми найти способ определить источник. До этого патча не было это возможно для обычного пользователя, и, конечно, не для получатель спама, рассылаемого с использованием этих методов.

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

Простое решение

Предлагаемые решения для тех, кто не хочет Почтовые заголовки X-PHP-Script, которые будут отображаться, варьируются от самостоятельного редактирования патч, чтобы изменить поведение, чтобы избежать использования PHP mail() вообще функционировать. Не совсем полезно.

Изучение содержимого исправления показывает более простое решение. Кажется, он полагается на переменные PHP $_SERVER для добавления заголовка почты в следующем формате к исходящим электронным письмам:

X-PHP-Script: <имя_сервера> для [,]<удаленный-адрес>

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

Для наших целей было достаточно показать только домашнюю страницу адрес (/) вместо полного пути к скрипту (PHP_SELF) и заменить IP-адрес пользователя (REMOTE_ADDR) с нашим (SERVER_ADDR):

// предотвращение раскрытия сведений о пользователе/скрипте в заголовке X-PHP-Script $oldphpself = $_SERVER['PHP_SELF']; $oldremoteaddr = $_SERVER['REMOTE_ADDR']; $_SERVER['PHP_SELF'] = "/"; $_SERVER['REMOTE_ADDR'] = $_SERVER['SERVER_ADDR']; // отправить электронное письмо почта($к, $тема, $сообщение[ $дополнительные_заголовки[ $дополнительные_параметры]]) // восстановить запутанные переменные сервера $_SERVER['PHP_SELF'] = $oldphpself; $_SERVER['REMOTE_ADDR'] = $oldremoteaddr; ?>

Вы также можете полностью отключить исправление, используя unset() для одного или нескольких соответствующих переменных $_SERVER.

Вы также можете подумать о написании собственной оболочки для почты. функция, которая дает вам возможность отключить X-PHP-Script для защищенных скриптов, но разрешая поведение по умолчанию для общедоступных формы. Это выходит за рамки данной статьи.

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

Ссылки

  • Патч заголовка PHP mail()
  • Ошибки PHP: #19538: невозможно определить источник электронной почты, отправленной функцией mail()
  • Dotdeb » Архив блога » Пакеты PHP 5.3.0 RC2 для Lenny

< PHP

Тип MIME для файлов .php

При настройке некоторых свойств svn на работе, мы задались вопросом о правильном MIME-тип для файлов .php.

Просматривая различные волшебные списки обнаружения типов MIME в нашем Unix машины и официальный IANA Список типов MIME , варианты, которые мы придумали, были:

  • текст/php
  • текст/x-php
  • приложение/php
  • приложение/x-php
  • приложение/x-httpd-php
  • приложение/x-httpd-php-источник

Правила типа MIME

Поскольку в IANA не зарегистрирован официальный тип MIME, только 9Расширение 0076 Можно использовать тип (с префиксом x) — Который означает, что text/php и application/php не подходят:

Любой незарегистрированный тип файла должен быть указан с предшествующим знаком x-, как в application/x-foo (RFC2045 5. 1), или x., как в application/x.foo (RFC4288 4.3). Любой тип без префикса x должен быть зарегистрирован в IANA и указан в вышеуказанный адрес. Любое другое поведение является нарушением стандартов MIME!

Дистрибутивы Linux

Волшебная база данных MIME Ubuntu — используется файлом команда — выдает text/x-php:

 $ файл -i update-file.php
файл обновления.php: text/x-php; кодировка = us-ascii
 

Debian mime-поддержка пакет, также поставляемый Ubuntu, содержит список приложение/x-httpd-php для .php и application/x-httpd-php-source для файлов .phps в /etc/mime.types. Эти два типа, на мой взгляд, больше предназначены для внутреннего использования Apache/веб-сервера. поскольку PHP можно использовать не только в демоне http .

Соображения IANA

Остаются text/x-php и application/x-php. Я лично предпочитаю text/* для читаемых пользователем текстовых файлов, вот почему я сначала скептически отнесся к application/x-php. Затем я увидел, что в 2006 году IANA официально назначила application/javascript для файлов кода JavaScript — и не текст/javascript. В RFC говорится:

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

— но не указывает, почему это так. Я думаю, это потому, что возникают проблемы с безопасностью поскольку браузеры пытаются отображать каждый тип текста/MIME как HTML.

А подобные рассуждения использовалось при подаче заявления на MIME-тип JSON который был официально назначен в RFC 4627:

Когда его спросили, почему не «text/json», Крокфорд, кажется, сказал JSON. на самом деле это не javascript и не текст, а также IANA с большей вероятностью раздать приложение/*, чем текст/*.

Другие языки​

Глядя на официально назначенный текст / типы, становится ясно, что в клубе нет ни одного типа исходного файла языка программирования. (HTML, судя по названию подразумевает, разметка а не язык программирования — поэтому text/html не считается .)

С другой стороны, список приложений/типов содержит типы как приложение/ecmascript и приложение/javascript, оба языка программирования. Кроме того, даже Debian включает в себя несколько языков программирования. приложение группа: приложение/x-ruby, приложение/x-sh и приложение /x-tcl.

Недостатки​

Использование application/x-php в качестве типа MIME для файлов .php не без боли.

Тип, начинающийся с text/, указывает, что содержимое файл удобочитаем. Я могу открыть его и получить представление о том, что происходит внутри, даже если я не все понимаю, когда не знаю конкретного языка файл находится в. Я могу использовать на нем текстовые утилиты: cat, grep, sed, diff — вы называете это. Я даже не должен пользоваться инструментами; это может быть приложение или сценарий оболочки, который я написал, который обнаруживает, что я работаю с текстовым файлом и используйте соответствующие инструменты.

Файлы с типом, начинающимся с application/ с другой стороны можно доверять только машинному чтению. Использование application/java-vm для файлов .class полностью хорошо, так как только компьютер может прочитать его — а также приложение/zip и приложение/vnd.oasis.opendocument.spreadsheet.

Один инструмент, который плохо работает с application/x-php, это вышеупомянутый свн : Он обнаруживает текстовые файлы как я описал, используя тип MIME часть носителя . Установка типа MIME файла .php на application/x-php приводит к проблеме, связанной с обработкой файлов PHP. как бинарные, таким образом, не различая их, делая различия в проектах PHP непригодными для использования. Нам пришлось вернуться к text/x-php в наших репозиториях svn.

Та же проблема возникает при использовании официального типа приложения/javascript. связанный отчет об ошибке предлагает поставить ряд приложений / типов на Список «это текстовый файл».