Php fpm curl https

Curl to HTTPS перестанет работать с Nginx + php-fpm

Просто была та же самая странная проблема. Случилось у меня на OS X 10.10.x, Apache 2.2.x и PHP 5.6. Ничего полезного в журналах ошибок.

2 ответа

Быстрый ответ: просто попробуйте удалить и установить php.

К сожалению, это на русском языке. Объяснение/перевод его: вам необходимо:

Я использовал Mac и следующие команды:

  • launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php54.plist
  • brew удалить php54
  • brew установить —without-apache —with-fpm —with-mysql php54
  • launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php54.plist

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

У меня была та же проблема в macOS. Для меня обновление службы brew устранило проблему.

brew update brew upgrade --cleanup 

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

Ещё вопросы

  • 1 FusionCharts не рендерится в Google Chrome и Firefox
  • 0 JSON @attributes Использование ионных или AngularJS
  • 0 Читать XML с ООП PHP
  • 1 Сравнение массивов для проверки последовательности
  • 0 не удается установить Dlib на Windows 10
  • 0 Поместить ошибку проверки Jquery в поле ?
  • 1 Предложения по оптимизации этого Java-кода с помощью математических функций
  • 0 2D массив не заполняется правильно или . C ++
  • 1 Печать звездочки на основе массива Int
  • 0 Javascript не может разобрать строку JSON
  • 0 При нажатии на миниатюру изображение должно отображаться в отдельном разделе.
  • 1 Использование mpi4py для распараллеливания цикла for в вычислительном кластере
  • 3 Рассчитать остаточное отклонение от модели логистической регрессии scikit-learn
  • 1 Как получить заявки для текущего пользователя в SharePoint 2013
  • 1 Это отношения многие ко многим?
  • 0 Массив ошибок используется как инициализатор, и я не знаю ошибку
  • 1 c # получить локальный путь .xsd из значения атрибута xsi: schemaLocation
  • 1 Как передать аргумент функции в привязке данных?
  • 1 Как перебрать списки из pandas dataframe в функции
  • 0 Mysql запрос оптимизации или сократить запрос
  • 1 Похоже, что пользовательский класс ConstraintLayout не может выкладывать вещи горизонтально — Android — Kotlin
  • 1 Сделать близлежащие пиксели белыми opencv
  • 0 php: невозможно выполнить итерацию для каждого цикла
  • 0 Должен ли я избегать перенаправления в классах реализации при переносе API
  • 0 установка div со скрытым атрибутом данных с помощью jquery
  • 0 Как выполнить функцию PHP crypt в Nodejs
  • 1 Crypto JS: TripleDES неправильно шифрует
  • 0 как отправить JSON также из PHP API
  • 0 Почему я получаю это ^ @, когда я пытаюсь получить доступ к первому элементу члена структуры данных CvMat
  • 1 Создание дочерних записей с родительской моделью и возврат вложенных в ответ
  • 0 Разрешить регулярное выражение с обратной косой чертой
  • 1 Tomcat Виртуальный хост и Wildcard DNS соответствия
  • 0 Создание поиска в php — набор текста в городе и получение достопримечательностей для этого города, перечисленных ниже
  • 0 JQuery добавить / удалить классы по ширине окна
  • 1 Хранение и доступ к данным в py-файле
  • 1 OpenGL ES 2.0 Android — ошибка вращения куба
  • 0 getElementsByName какое имя?
  • 1 Не удается получить информацию XML в Java
  • 1 Не удается прочитать свойство Symbol (Symbol.iterator) из неопределенного
  • 1 Как проверить в JavaScript, если объект находится в массиве с несколькими объектами?
  • 0 Удалить дублирование на основе информации одного столбца
  • 1 Поиск нежелательных значений в панде
  • 0 Доступ к области действия из другой директивы
  • 0 Переменная PHP MYSQL возвращает ошибку
  • 0 Как передать вектор объектов в другой класс, а затем вызвать функцию внутри члена объекта в этом векторе?
  • 0 Изменить стиль списка при помощи JavaScript
  • 0 добавить числовой индекс в таблицу MySQL
  • 1 Оптимизация Pandas — Как работать с данными временных рядов Pandas в двух столбцах и получать почасовые данные между столбцами
  • 1 Имеет ли название «взаимосвязанный» какое-то конкретное значение?
  • 0 Документ, созданный с помощью PHP, не показывает предварительный просмотр в OSX
Читайте также:  How to call a JavaScript function in HTML?

Источник

Настройка Nginx + PHP-FPM и HTTPS от Let’s Encrypt на AWS EC2 с Ubuntu Server 16.04 LTS

Порядок действий для установки PHP 7.1 и разворачивания проекта на PHP на созданном Amazon AWS EC2 instance. Основано на этой статье, с дополнениями отсюда и из других источников. Используется более новая версия PHP, добавлены инструкции по установке HTTPS, и пример настройки проекта на Laravel. Подразумевается, что инстанс используется в режиме разработки.

Сначала приведу код полностью. Это не bash-скрипт, а просто список команд, команды выполняются вручную по отдельности, при необходимости вводятся нужные данные.

# Instructions how to setup new AWS EC2 instance with Ubuntu Server 16.04 LTS and install PHP Laravel project and HTTPS # This is not a bash script, you have to run and control all commands manually sudo apt-get install nginx mysql-server sudo mysql_secure_installation sudo add-apt-repository ppa:ondrej/php && sudo apt-get update sudo apt-get install php7.1 php7.1-cli php7.1-common php7.1-mysql php7.1-fpm php7.1-curl php7.1-gd php7.1-bz2 php7.1-mcrypt php7.1-json php7.1-tidy php7.1-mbstring php-redis php-memcached php7.1-zip php7.1-dom php7.1-gmp # run after installation to create config directory from current user sudo apt-get install mc mc sudo mcedit /etc/php/7.1/fpm/php.ini # cgi.fix_pathinfo=0 sudo systemctl restart php7.1-fpm sudo mcedit /etc/nginx/sites-available/default server < listen 80 default_server; listen [::]:80 default_server; root /var/www/html; #! index index.php index.html index.htm index.nginx-debian.html; server_name _; #! location / < try_files $uri $uri/ /index.php?$query_string; >#! location ~ \.php$ < include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.1-fpm.sock; >#! location ~ /\.ht < deny all; >> sudo nginx -t sudo systemctl reload nginx echo " /dev/null # check http://11.22.33.44/info.php sudo rm /var/www/html/info.php sudo chown -R "$USER":www-data /var/www/ sudo find /var/www/ -type f -exec chmod 660 <> \; && sudo find /var/www/ -type d -exec chmod 2770 <> \; sudo usermod -a -G www-data ubuntu # https sudo apt-get install software-properties-common && sudo add-apt-repository ppa:certbot/certbot && sudo apt-get update && sudo apt-get install python-certbot-nginx sudo mcedit /etc/nginx/sites-available/default # server_name my.domain.name; sudo systemctl reload nginx sudo certbot --nginx echo -e '#!/bin/sh\n\ncertbot renew\n' | sudo tee /etc/cron.daily/certbot-renew > /dev/null sudo chmod 0755 /etc/cron.daily/certbot-renew sudo certbot renew --dry-run 
sudo apt-get install git curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer cd /var && rm -rf www/html # set repository URL here git clone . www cd www git checkout dev ln -s public html composer install sudo chgrp -R www-data storage bootstrap/cache sudo chmod -R ug+rwx storage bootstrap/cache sudo chmod -R 0777 storage/framework/cache cp .env.example .env && php artisan key:generate # set values in .env file - APP_NAME, DB_DATABASE, and other 

Настройка системы

sudo apt-get install nginx mysql-server sudo mysql_secure_installation 

mysql_secure_installation задает несколько вопросов по настройке.

Would you like to setup VALIDATE PASSWORD plugin? n Change the password for root? n Remove anonymous users? y Disallow root login remotely? y Remove test database and access to it? y Reload privilege tables now? y 

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

Читайте также:  Css cut text 3 dots

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

sudo add-apt-repository ppa:ondrej/php && sudo apt-get update sudo apt-get install php7.1 php7.1-cli php7.1-common php7.1-mysql php7.1-fpm php7.1-curl php7.1-gd php7.1-bz2 php7.1-mcrypt php7.1-json php7.1-tidy php7.1-mbstring php-redis php-memcached php7.1-zip php7.1-dom php7.1-gmp 

PHP 7.1 и 7.2 пока нет в стандартных репозиториях.

sudo apt-get install mc mc 

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

Не стоит после установки запускать в первый раз через sudo mc , так как файлы конфигурации создадутся от пользователя root, и при запуске от обычного пользователя будет ошибка доступа.

sudo mcedit /etc/php/7.1/fpm/php.ini # cgi.fix_pathinfo=0 sudo systemctl restart php7.1-fpm 

Найти настройку cgi.fix_pathinfo , раскомментировать и поставить 0. Это закрытие уязвимости, подробнее можно почитать здесь.

sudo mcedit /etc/nginx/sites-available/default server < listen 80 default_server; listen [::]:80 default_server; root /var/www/html; #! index index.php index.html index.htm index.nginx-debian.html; server_name _; #! location / < try_files $uri $uri/ /index.php?$query_string; >#! location ~ \.php$ < include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.1-fpm.sock; >#! location ~ /\.ht < deny all; >> 

Восклицательными знаками отмечены места, где надо поменять.

— index — добавить index.php
— try_files — убрать =404 , добавить /index.php?$query_string
— location ~ \.php$ — раскомментировать секцию, поменять название файла с сокетом
— location ~ /\.ht — раскомментировать секцию для файлов *.htaccess

sudo nginx -t sudo systemctl reload nginx 

Проверить правильность конфигурации, если все нормально, перезагрузить ее.

echo " /dev/null # check http://11.22.33.44/info.php sudo rm /var/www/html/info.php 

Создать тестовый файл, проверить работу PHP, потом удалить. Выполнять необязательно. 11.22.33.44 обозначает IP-адрес инстанса.

sudo chown -R "$USER":www-data /var/www/ sudo find /var/www/ -type f -exec chmod 660 <> \; && sudo find /var/www/ -type d -exec chmod 2770 <> \; sudo usermod -a -G www-data ubuntu 

Сейчас в веб-каталоге все создано от рута, надо изменить на обычного пользователя. Nginx запускает PHP от пользователя www-data из группы www-data , SSH подключается с пользователем ubuntu . Надо добавить ubuntu в эту группу, иначе могут быть проблемы с доступом. Например, когда какая-то консольная команда создает папку, куда будет идти запись и при открытии сайта через веб.

Читайте также:  Java string to utf 8 codes

Настройка HTTPS

Настройка HTTPS часто делается после настройки проекта, когда он уже есть и работает по HTTP. Но действия общие, от проекта не зависят, поэтому рассмотрим ее раньше.
Используются бесплатные сертификаты от Let’s Encrypt.

sudo apt-get install software-properties-common && sudo add-apt-repository ppa:certbot/certbot && sudo apt-get update && sudo apt-get install python-certbot-nginx 

Устанавливаем certbot, он обеспечивает настройку и обновление сертификатов.

sudo mcedit /etc/nginx/sites-available/default # server_name my.domain.name; sudo systemctl reload nginx 

Прописываем доменное имя. Оно уже должно быть доступно и указывать на IP сервера. Для этого в настройках домена у регистратора нужно добавить DNS-запись типа A.

Запускаем бота. Он автоматически определит домен по настройкам Nginx, но запросит подтверждение, а также задаст несколько других вопросов. Затем он устанавливает сертификат и обращается по доменному имени для проверки. Настройки Nginx для HTTPS он меняет сам.

echo -e '#!/bin/sh\n\ncertbot renew\n' | sudo tee /etc/cron.daily/certbot-renew > /dev/null sudo chmod 0755 /etc/cron.daily/certbot-renew 

Обновление сертификата надо добавить в cron для ежедневного запуска.

sudo certbot renew --dry-run 

Есть специальная команда для проверки, пройдет ли обновление без ошибок.

Настройка проекта

sudo apt-get install git curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer 

Composer лучше не ставить через apt-get, там старая версия. На сайте Composer есть скрипт для более безопасной установки с проверкой хеша. Можно использовать его, или просто взять оттуда текущий хеш и проверить вручную.

cd /var && rm -rf www/html # set repository URL here git clone . www cd www git checkout dev ln -s public html composer install 

Клонируем проект и устанавливаем зависимости. Вставьте свой репозиторий и название ветки.
Nginx настроен на папку html , надо ее убрать и сделать симлинк на папку где в проекте находится index.php . В Laravel это папка public .

sudo chgrp -R www-data storage bootstrap/cache sudo chmod -R ug+rwx storage bootstrap/cache sudo chmod -R 0777 storage/framework/cache 

Устанавливаем права на папки специально для Laravel. Подробнее здесь.

cp .env.example .env && php artisan key:generate 

Создаем рабочий файл с настройками окружения. Далее все как обычно — создаем, настраиваем, прописываем.

Источник

Оцените статью