Laravel 5.3 在 DriverException.php 第 33 行找不到接口 Throwable
Laravel 5.3 Interface Throwable not found at DriverException.php line 33
最后一天我将 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();
}
但是none帮助了我。
我想这不是您所希望的答案,但问题是您使用的代码是为 PHP 7 编写的。Throwable
接口首次引入是在 PHP 7 和使用它的代码因此无法在较旧的 PHP 版本上运行。
我最好的猜测是,特别是因为你显示的异常来自供应商包,你自己的代码库很好,只有一个依赖项导致了问题(因为你最近更新了你的依赖项)。要解决这个问题,你可以做的是在 composer.json
中为你的项目模拟一个比你的开发机器 运行ning 更低的 PHP 版本(你似乎 运行 PHP 7 那里)。如果没有这样的设置,composer 本身将始终尝试更新到与 运行 上的机器兼容的最新软件包(当然还有 composer.json
中定义的版本)。
顺便说一句,就在昨天,我回答了一个问题,我现在要建议的确切功能造成了麻烦 (),但对您的情况会有所帮助。因此,请继续并将以下配置部分添加到您的 composer.json
(最好使用您的服务器 运行ning 的确切 PHP 版本):
"config": {
"platform": {
"php": "5.6.0"
}
}
如果 composer.json
中已经有一个 config
块,只需向其中添加 platform.php
参数即可。之后,运行 composer update
(很可能)降级有问题的软件包。
如果这不能解决问题,您可能需要手动查找有问题的包并降低它们的版本,以便它们与您的生产 PHP 版本一起使用。
Throwable 是 PHP 7.0+ 的概念。
您确定您没有使用与 PHP 不兼容的 DBAL 版本吗? DriverException 仅在需要 PHP 7.1 的 2.6 中扩展 Throwable。
因此,您需要做的是检查您的服务器配置是否符合要求,即运行 php>7.1 并安装了 DBAL 扩展。
最后一天我将 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();
}
但是none帮助了我。
我想这不是您所希望的答案,但问题是您使用的代码是为 PHP 7 编写的。Throwable
接口首次引入是在 PHP 7 和使用它的代码因此无法在较旧的 PHP 版本上运行。
我最好的猜测是,特别是因为你显示的异常来自供应商包,你自己的代码库很好,只有一个依赖项导致了问题(因为你最近更新了你的依赖项)。要解决这个问题,你可以做的是在 composer.json
中为你的项目模拟一个比你的开发机器 运行ning 更低的 PHP 版本(你似乎 运行 PHP 7 那里)。如果没有这样的设置,composer 本身将始终尝试更新到与 运行 上的机器兼容的最新软件包(当然还有 composer.json
中定义的版本)。
顺便说一句,就在昨天,我回答了一个问题,我现在要建议的确切功能造成了麻烦 (composer.json
(最好使用您的服务器 运行ning 的确切 PHP 版本):
"config": {
"platform": {
"php": "5.6.0"
}
}
如果 composer.json
中已经有一个 config
块,只需向其中添加 platform.php
参数即可。之后,运行 composer update
(很可能)降级有问题的软件包。
如果这不能解决问题,您可能需要手动查找有问题的包并降低它们的版本,以便它们与您的生产 PHP 版本一起使用。
Throwable 是 PHP 7.0+ 的概念。 您确定您没有使用与 PHP 不兼容的 DBAL 版本吗? DriverException 仅在需要 PHP 7.1 的 2.6 中扩展 Throwable。 因此,您需要做的是检查您的服务器配置是否符合要求,即运行 php>7.1 并安装了 DBAL 扩展。