Интерфейс Laravel 5.3 Throwable не найден в строке DriverException.php 33 - PullRequest
0 голосов
/ 30 июня 2018

В последний день я загрузил свой проект Laravel на сервер. Все работало нормально, как в локальной системе. С сегодняшнего утра, когда пользователь отправляет один из запросов POST, он выдает вышеуказанную ошибку и отдыхает, все запросы работают нормально.

Я пытался с

composer dump-autoload cleared route and cache

Вот здесь DriverException.php

    <?php
/*
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the MIT license. For more information, see
 * <http://www.doctrine-project.org>.
 */

namespace Doctrine\DBAL\Driver;

/**
 * Contract for a driver exception.
 *
 * Driver exceptions provide the SQLSTATE of the driver
 * and the driver specific error code at the time the error occurred.
 *
 * @author Steve M端ller <st.mueller@dzh-online.de>
 * @link   www.doctrine-project.org
 * @since  2.5
 */
interface DriverException extends \Throwable
{
    /**
     * Returns the driver specific error code if available.
     *
     * Returns null if no driver specific error code is available
     * for the error raised by the driver.
     *
     * @return integer|string|null
     */
    public function getErrorCode();

    /**
     * Returns the driver error message.
     *
     * @return string
     */
    public function getMessage();

    /**
     * Returns the SQLSTATE the driver was in at the time the error occurred.
     *
     * Returns null if the driver does not provide a SQLSTATE for the error occurred.
     *
     * @return string|null
     */
    public function getSQLState();
}

Но никто не помог мне.

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Throwable - это концепция PHP 7.0+. Вы уверены, что не используете версию DBAL, несовместимую с вашим PHP? DriverException расширяет Throwable только в версии 2.6, для которой требуется PHP 7.1. Так что вам нужно проверить конфигурацию вашего сервера, если она соответствует, т.е. работает php> 7.1 и установлено расширение DBAL.

0 голосов
/ 30 июня 2018

Полагаю, это не тот ответ, на который вы надеялись, но проблема в том, что вы используете код, написанный для PHP 7. Интерфейс Throwable был впервые представлен в PHP 7 и коде. поэтому его использование не будет работать на более старой версии PHP.

Мое лучшее предположение состоит в том, что, особенно из-за того, что вы показали исключение из пакета поставщика, ваша собственная кодовая база в порядке и проблема возникает только из-за зависимости (потому что вы недавно обновили свои зависимости). Чтобы решить эту проблему, вы можете эмулировать более низкую версию PHP для вашего проекта в пределах composer.json, чем та, на которой работает ваша машина разработки (кажется, что вы запускаете PHP 7 там). Композитор сам, без такой настройки, всегда будет пытаться обновить до последних пакетов, совместимых с машиной, на которой он запущен (и, конечно, в отношении версий, определенных в composer.json).

Кстати, только вчера я ответил на вопрос, где именно та функция, которую я собираюсь предложить, сейчас вызывает проблемы ( Homestead: Как обновить версию PHP ), но в вашем случае это поможет. Поэтому, пожалуйста, добавьте следующую конфигурационную часть к composer.json (лучше всего с точной версией PHP, на которой работает ваш сервер):

"config": {
    "platform": {
        "php": "5.6.0"
    }
}

Если в composer.json уже есть блок config, просто добавьте к нему параметр platform.php. После этого запустите composer update, чтобы (скорее всего) понизить проблемные пакеты.

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

...