Laravel供应商文件出错:警告:不支持在Laravel 5.3中声明'strict_types'

时间:2017-12-01 23:32:33

标签: php laravel php-7

由于某些原因,当我运行composer update时,我的Laravel 5.3应用程序出现了以下错误

  

警告:不支持声明'strict_types'   /home/site/public_html/bookings/vendor/league/csv/src/functions.php   第13行

我认为这可能与PHP版本有关,因为它没有识别PHP 7输入结构,我在我的服务器上运行PHP 7.0.25但是当我在我的控制台中运行php -v时它显示的服务器是PHP 5.6.32。

任何人都知道为什么对这个核心文件抱怨?我没有触及vendor文件夹中的任何文件。

以下是该文件的内容:

<?php
/**
* This file is part of the League.csv library
*
* @license http://opensource.org/licenses/MIT
* @link https://github.com/thephpleague/csv/
* @version 9.1.1
* @package League.csv
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);

namespace League\Csv;

use ReflectionClass;
use Traversable;

/**
 * Returns the BOM sequence found at the start of the string
 *
 * If no valid BOM sequence is found an empty string is returned
 *
 * @param string $str
 *
 * @return string
 */
function bom_match(string $str): string
{
    static $list;

    $list = $list ?? (new ReflectionClass(ByteSequence::class))->getConstants();

    foreach ($list as $sequence) {
        if (0 === strpos($str, $sequence)) {
            return $sequence;
        }
    }

    return '';
}

/**
 * Detect Delimiters usage in a {@link Reader} object
 *
 * Returns a associative array where each key represents
 * a submitted delimiter and each value the number CSV fields found
 * when processing at most $limit CSV records with the given delimiter
 *
 * @param Reader   $csv        the CSV object
 * @param string[] $delimiters list of delimiters to consider
 * @param int      $limit      Detection is made using up to $limit records
 *
 * @return int[]
 */
function delimiter_detect(Reader $csv, array $delimiters, int $limit = 1): array
{
    $found = array_unique(array_filter($delimiters, function (string $value): bool {
        return 1 == strlen($value);
    }));
    $stmt = (new Statement())->limit($limit)->where(function (array $record): bool {
        return count($record) > 1;
    });
    $reducer = function (array $result, string $delimiter) use ($csv, $stmt): array {
        $result[$delimiter] = count(iterator_to_array($stmt->process($csv->setDelimiter($delimiter)), false), COUNT_RECURSIVE);

        return $result;
    };
    $delimiter = $csv->getDelimiter();
    $header_offset = $csv->getHeaderOffset();
    $csv->setHeaderOffset(null);
    $stats = array_reduce($found, $reducer, array_fill_keys($delimiters, 0));
    $csv->setHeaderOffset($header_offset)->setDelimiter($delimiter);

    return $stats;
}

if (!function_exists('\is_iterable')) {
    /**
     * Tell whether the content of the variable is iterable
     *
     * @see http://php.net/manual/en/function.is-iterable.php
     *
     * @param mixed $iterable
     *
     * @return bool
     */
    function is_iterable($iterable): bool
    {
        return is_array($iterable) || $iterable instanceof Traversable;
    }
}

/**
 * Tell whether the content of the variable is an int or null
 *
 * @see https://wiki.php.net/rfc/nullable_types
 *
 * @param mixed $value
 *
 * @return bool
 */
function is_nullable_int($value): bool
{
    return null === $value || is_int($value);
}

1 个答案:

答案 0 :(得分:1)

您的服务器Web已启用PHP 7(如果您从phpinfo();),但您的服务器的CLI没有。您尝试运行的命令正在从控制台运行。

CLI和WEB PHP版本不同。

如果您的服务器是基于Debian的(Ubuntu)。 查看/ etc / php并查看是否有多个PHP版本,如果有,您可以创建符号链接以将您的CLI版本链接到PHP 7

sudo ln -sfn /usr/bin/php7.0 /usr/bin/php