Страница 1 из 2

Проблема с openssl и composer

Добавлено: 20 дек 2013, 18:07
ale321
Здравствуйте.
Open server 4.8.8
Проблема:
Использую менеджер зависимостей для php - composer.
При попытке скачать библиотеки выводится ошибка о невозможности загрузки "You must enable the openssl extension to download files via https".
Т.е. composer думает, что openssl-расширение не подключено.

Что делал.
Строка "extension=php_openssl.dll" раскомментирована в:
DISK:\userdata\config\PHP-5.3.27_php.ini (использую эту версию PHP, установлено в окне настроек), раскомментирована в аналогичных файлах в этой же папке для других версий PHP. Раскомментировал в php.ini в DISK:\userdata\temp\config. Раскомментировал везде, где только возможно.
Ничего не помогает.

Попытался посмотреть через CLI пути к конфигурационным файлам. Результат:

C:\Users\USER>php --ini
Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File: (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)

Что делаю не так? В чем может быть проблема?

    Добавлено: 20 дек 2013, 21:35
    Максим
    Работа в консоли

    Для запуска встроенной консоли необходимо запустить сервер и выполнить [Меню - Дополнительно - Консоль]. Среда окружения (англ. Environment) формируется в момент запуска сервера и передаётся всем запускаемым модулям. Любые другие программы, будь то консоль или IDE, так же могут получить правильное окружение, достаточно запускать эти программы из меню Open Server. Для этого можно либо сделать закладку, либо добавить ярлык в меню программ (см. разделы "Меню закладок" и "Меню программ").

    Необходимо знать, что если вы запускаете консоль или любую другую программу из стандартного меню Пуск или с ярлыка на рабочем столе, а не из меню Open Server, то они не смогут работать с виртуальным окружением сформированным в Open Server.

    Встроенную консоль можно запустить даже если сервер выключен, в Full версии выполните [Меню - Программы - Интернет - Консоль]. Однако при выключенном сервере среда окружения не сформирована и поэтому работать из консоли с PHP и другими модулями или программами (Pear, Composer, скриптами и т.д.) будет невозможно.

    Важные особенности

    Если вы сначала запустили консоль и только потом запустили сервер, то среда окружения НЕ станет доступна в консоли. Чтобы начать полноценную работу с модулями после запуска сервера нужно закрыть и заново открыть консоль, поскольку только при активном сервере консоль получает правильно сформированное окружение в момент запуска. Точно так же среда окружения не будет обновлена в консоли если вы переключились на другой модуль PHP или MySQL и перезапустили сервер, но при этом не перезапустили консоль!

    Добавлено: 20 дек 2013, 22:25
    medar
    ale321, это известный "ньюанс" в работе openserver, просто перепишите php.ini в одну папку с экзешником и все заработает: http://open-server.ru/forum/viewtopic.php?p=8836#p8836

    Добавлено: 20 дек 2013, 22:37
    Максим
    medar писал(а):ale321, это известный "ньюанс" в работе openserver, просто перепишите php.ini в одну папку с экзешником и все заработает: http://open-server.ru/forum/viewtopic.php?p=8836#p8836
    Начиная с последней версии Open Server этого уже не нужно, по просьбам пользователей сервер теперь создаёт виртуальное окружение как если бы PHP был установлен стационарно. Так что даже путь до php.ini теперь указывать не требуется.

    Но это действует только для софта запускаемого из меню OS. Если запускать ПО из других мест то ваш совет поможет, но только для тех программ которым не нужны переменные окружения PHP и правильные пути в path. Поэтому я всегда всем советую кинуть ярлык в меню Open Server.

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

    Добавлено: 20 дек 2013, 23:09
    medar
    Но это действует только для софта запускаемого из меню OS
    Вот именно.

    PS Напоминаю, что проблему с композером (c которой люди будут идти косяками) и другие подобные можно было бы легко решить копированием php.ini при старте опенсервера в папку с php.exe .

    Добавлено: 20 дек 2013, 23:18
    Максим
    Проблемы нет и никогда не было, давайте называть вещи своими именами. Есть особенность работы Open Server (а именно то, что он портативен) и есть нежелание некоторых пользователей запускать софт из меню Open Server. Но в этом случае пускай устанавливают Apache, PHP и т.д. стационарно в систему и пользуются ими, Open Server им ни к чему.

    Добавлено: 20 дек 2013, 23:33
    medar
    Да, это не проблема, согласен. У опенсервера есть несколько особенностей, несколько из них - документация не на сайте, а внутри в в chm формате, невозможность апдейта и принципиальная портабельность - всегда будут причинами появления людей на форуме с одними и теми же вопросами и одними и теми же ответами. Я все жду, когда автору надоест отвечать хотя бы по одной проблеме, но не настаиваю на решении, конечно.

    Добавлено: 20 дек 2013, 23:58
    ale321
    medar писал(а):ale321, это известный "ньюанс" в работе openserver, просто перепишите php.ini в одну папку с экзешником и все заработает: viewtopic.php?p=8836#p8836
    Да, кинул php.ini в папку, как вы и сказали. Возникла проблема с imagemagick. Пришлось еще и в переменные окружения его папку прописывать.
    С ярлыками из указанной соседней темы тоже не сильно успешно. Использую composer c с помощью плагина в sublime text, а ему нужно "виртуальное окружение как если бы PHP был установлен стационарно". Так вот, он постоянно ругался.

    Максим, за информацию о консоли спасибо и за это:
    Начиная с последней версии Open Server этого уже не нужно, по просьбам пользователей сервер теперь создаёт виртуальное окружение как если бы PHP был установлен стационарно.
    P.S. Искал документацию на сайте - не нашел. В меню программы - не нашел. После того, как отписались - начал искать еще более тщательно. Нашел там, где не искал. Стереотипы сыграли свою роль. Искал, как обычно, в первом уровне меню и где-то снизу. Мысль озвучил - "выводы делать только вам", как в той передаче.

    Надо новую версию скачать и "установить", а то столько всего пытался уже воротить с этими sublime/composer + openserver, что уже и не помню всего того, что пытался сделать. Должно помочь.

    Добавлено: 21 дек 2013, 00:51
    Максим
    ale321 писал(а):P.S. Искал документацию на сайте - не нашел. В меню программы - не нашел. После того, как отписались - начал искать еще более тщательно. Нашел там, где не искал.
    Вы говорите так, будто бы пол ночи перебирали сотню пунктов огромного меню длиной в два километра и еле нашли то что нужно. Меню программы маленькое, там всё просто и понятно. Как можно не найти там документацию по open server лично мне не понятно.

    По поводу окружения - если вам будет нужно чтобы Open Server подхватывал еще и виндовый PATH, то обратите внимание на соответствующую опцию в настройках Open Server (вкладка Сервер).

    Добавлено: 21 дек 2013, 01:20
    ale321
    Для себя, я не понял, что изменилось.
    Использую composer через sublime text 2.
    Для тех, кто будет приходить с подобной проблемой (не работает composer при использовании в sublime text). (В описании присутствуют вещи, которые, казалось бы, не связаны с OpenServer. Но именно из-за особенностей работы OpenServer. Указанная связка не работает "из коробки")

    1. Скачать с оф. сайта автоматический инсталлятор Composer. Он добавляет composer в переменные окружения. В результате через стандартную командную строку должна исполняться команда "composer".
    2. Нужно скопировать "php.ini из \userdata\temp\config в \modules\php\PHP-X.X.XX - чтобы он лежал рядом с php.exe", где PHP-X.X.XX - папка используемой в настоящее время версии PHP. В этом файле должен быть раскомментирован модуль openssl.
    3. Добавить в переменные окружения эту же папку PHP-X.X.XX (полный путь, естественно).
    4. Если возникнет проблема с imagemagick, то добавить и эту папку в переменные окружения (modules\imagemagick).
    5. После этого в командной строке Windows должна исполняться команда "php -v".
    6. Создать файл composer.json (при использовании автоматического инсталлятора, его необходимо создать в папке пользователя).
    7. Выполнить в командной строке Windows команду "composer install". Должна создаться папка vendor и скачаться все необходимое.
    8. Запустить Sublime text с установленным плагином для Composer. Зайти в настройки Settings - User и добавить следующее:
    {
        "composer_command":  "composer"
    }
    
    9. Сохранить, выйти. Обязательно перезагрузить компьютер.
    10. Использование. Создаем проект в Sublime text, создаем файл composer.json в корне проекта, нажимаем shift+ctrl+p, вводим composer install, нажимаем enter.

    P.S.После каждого действия с переменными окружения нужно или перезагружаться или закрывать и открывать консоль Windows заново.
    P.P.S. Надо понимать, что после того, как изменится версия PHP в настройках, нужно будет повторять действие 2, предварительно удалив созданный ранее php.ini
    P.P.P.S. Ну, и еще... забыл. Нужно установить Git, скачав с сайта разработчика.

    Добавлено спустя 19 минут 32 секунды:
    если вам будет нужно чтобы Open Server подхватывал еще и виндовый PATH
    Скорее, чтобы Win подхватывал путь к php Open Server'а...

    По Sublime - можно чуть проще.
    Загвоздка только в том, что php при установке не добавляется в переменные окружения, т.к. Open Server устанавливается портативным методом.

    1. Установить Git, чтобы он исполнялся из стандартной командной строки.
    2. Скопировать "php.ini из \userdata\temp\config в \modules\php\PHP-X.X.XX - чтобы он лежал рядом с php.exe", где PHP-X.X.XX - папка используемой в настоящее время версии PHP. В этом файле должен быть раскомментирован модуль openssl.
    3. Добавить в переменные окружения эту же папку PHP-X.X.XX (полный путь, естественно).
    4. Если возникнет проблема с imagemagick, то добавить и эту папку в переменные окружения (modules\imagemagick).
    5. После этого в командной строке Windows должна исполняться команда "php -v".
    6. В консоли Open Server'а выполняем сначала команду:
    mkdir composer & cd composer & php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"
    
    потом
    echo @php "%~dp0composer.phar" %*>composer.bat
    
    7. Запустить Sublime text с установленным плагином для Composer. Зайти в настройки Settings - User и добавить следующее (указать путь к только что созданному файлу с расширением bat):
    {
        "composer_command":  "W:/composer/composer.bat"
    }
    
    8. Перезагрузить компьютер.
    9. Использование. Создаем проект в Sublime text, создаем файл composer.json в корне проекта, нажимаем shift+ctrl+p, вводим composer install, нажимаем enter.

    P.S. Надо понимать, что после того, как изменится версия PHP в настройках, нужно будет повторять действие 2, предварительно удалив созданный ранее php.ini
    P.P.S. Надеюсь, что кому-нибудь поможет и сэкономит день поисков. Искал на stackoverflow, в гугле, тут на форуме, но в одном месте такой информации не нашел.