Сайт работает на локальном хосте, но одна страница, использующая Composer, выдает ERR_CONNECTION_REFUSED. Неверный URL-адрес http_proxy или ошибочный файл composer.phar?

Вы все, вероятно, знакомы со страницей Chrome, на которой написано

localhost отказался подключаться. Пытаться:

Проверка соединения
Проверка прокси и брандмауэра

Это то, что я получаю, когда пытаюсь перейти по URL-адресу на своем сайте. На вкладке «Сеть» элемента проверки я вижу «Статус (сбой)», «Тип документа» и «Инициатор другой». Я никогда не работал над этой страницей, поэтому Composer мне не понадобился до сих пор. Я считаю, что это единственная страница, которая использует Composer.

Чтобы загрузить Composer, я следовал указаниям здесь, а затем запустил composer install на своем терминале git в VS Code. Это создает каталог /vendor/ (включенный в файл .gitignore), а также файл composer.phar. Также есть composer.json и composer.lock, но я уже взял их из репозитория (они не указаны в .gitignore).

После установки я запустил Composer Setup, запустив его для всех пользователей, не выбирая режим разработчика и выбирая командную строку PHP в каталоге MAMP (сервер, который я использую для локального хоста) для PHP 7.2.10. Это та же версия, что и моя среда в VS Code, и она вызывала разные проблемы при запуске MAMP, пока я не изменил настройки MAMP с 7.1.20 на 7.2.10.

Затем он спрашивает Использовать прокси-сервер для подключения к Интернету. Я думал (думаю), что MAMP — это прокси-сервер, поэтому я установил флажок «да», а затем ввел localhost. Я считаю, что это добавило localhost в качестве переменной среды (Панель управления->Свойства системы->Дополнительно->Переменные среды) в списке моих пользовательских переменных (НЕ системных переменных) под именем переменной http_proxy. Я закончил настройку, и он предупредил меня о версиях PHP для Windows OneDrive. Чтобы быть конкретным, в CLI я видел подобное

Папка Windows OneDrive не поддерживается в версиях PHP ниже 7.2.23 и 7.3.10. Обновите свой PHP (7.2.10), чтобы использовать это расположение с Composer.

Я предполагаю, что это не моя проблема, потому что я ни для чего не использую OneDrive.

MAMP выдавал много ошибок, когда я пытался запустить его, пока я не изменил настройки версии, как я уже упоминал. После того, как это было исправлено, это не работало, поэтому я попытался удалить и установить, используя http://localhost в качестве URL-адреса моего прокси, но я не смог, потому что он уже был жестко запрограммирован в переменных моей среды. Когда я в конце концов понял это и попытался изменить его, Composer не смог установить с этим URL-адресом прокси. Поэтому я считаю, что localhost правильный, ЕСЛИ я вообще хочу что-то включить. Кто-то сказал мне, что, по их мнению, мне не следовало проверять Использовать прокси-сервер для подключения к Интернету. Итак, на данный момент я удалил http_proxy в переменных среды Windows и не использую их при настройке Composer.

Я пробовал composer update, composer install и удалял Composer, как показано здесь и здесь, но поскольку composer.json и composer.lock включены в репозиторий и поставщика файл находится в .gitignore, я не думаю, что когда-либо полностью удалял и удалял. Две приведенные выше команды композитора вернули мне

Нечего устанавливать, обновлять или удалять

Я не могу вспомнить, что я запускал изначально, чтобы получить это сообщение об ошибке, но я бы увидел:

[Composer\Downloader\TransportException] Невозможно использовать прокси-сервер: неверный URL-адрес http_proxy

и если я запускал composer diag, я всегда получал это сообщение и ту же ошибку, что и в этом изображение. Я только что запустил его, чтобы воспроизвести этот код, но у меня все в порядке. Недавно кто-то прислал мне свой заархивированный каталог поставщиков и заменил им мой. Я думал, что с их каталогом поставщиков я все еще получаю эту ошибку диагностики композитора, но я определенно все еще не мог подключиться к сайту. Это первый раз, когда я получил все ОК, но я все еще не могу подключиться к сайту. Это заставляет меня думать, что composer.lock из репозитория, возможно, не понравился материал композитора из моей локальной установки. В composer.json всего несколько строк кода, поэтому я не думаю, что это может быть он.

Мой composer.phar имеет:

<?php
if (extension_loaded('apc') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN) && filter_var(ini_get('apc.cache_by_default'), FILTER_VALIDATE_BOOLEAN)) {
    if (version_compare(phpversion('apc'), '3.0.12', '>=')) {
        ini_set('apc.cache_by_default', 0);
    } else {
        fwrite(STDERR, 'Warning: APC <= 3.0.12 may cause fatal errors when running composer commands.'.PHP_EOL);
        fwrite(STDERR, 'Update APC, or set apc.enable_cli or apc.cache_by_default to 0 in your php.ini.'.PHP_EOL);
    }
}

Phar::mapPhar('composer.phar');
require 'phar://composer.phar/bin/composer';

__HALT_COMPILER(); ?>

и около 60 строк кода куча ? символы и пустые квадраты вместе с прерывистым английским языком, например src/Composer/Autoload/AutoloadGenerator.php. Из-за этого VS Code выдает ошибку в более чем 100 тысячах строк кода ниже __HALT_COMPILER(): ?> Я не уверен, является ли это проблемой или все в порядке, потому что это просто проблема компиляции, и компилятор должен останавливаться прямо перед ней. Я также не уверен, почему эта функция есть во всех заглавные буквы... Я пометил код Visual Studio, потому что не уверен, что неправильно выдавать эту ошибку после __HALT_COMPILER(): ?>.

Кроме того, это могут быть мои настройки прокси-сервера Windows, как предлагает Google Chrome. Это кажется маловероятным, потому что остальная часть моего сайта в порядке.

Я не уверен, в чем проблема, но теперь, когда composer diag не выдает никаких ошибок, кажется, что наиболее насущной проблемой будет исправление моего composer.phar или, по крайней мере, определение того, является ли это проблемой.

Спасибо всем за вашу помощь. Мне это очень нужно!


person Joey    schedule 15.01.2021    source источник
comment
Пожалуйста, поделитесь более подробной информацией - обычно ваше приложение не использует Composer   -  person Nico Haase    schedule 15.01.2021
comment
Composer используется для требования зависимости от Azure. В моем composer.json есть только следующее: { require: { microsoft/azure-storage-blob: * } } и веб-страница, которая не загружается, имеет следующее: use MicrosoftAzure\Storage\Blob\BlobRestProxy;   -  person Joey    schedule 15.01.2021