在Bluehost cPanel中上传后,我的Laravel项目中出现以下错误。但是在本地服务器中没有错误。
解析错误:语法错误,意外的'const'(T_CONST),预期变量(T_VARIABLE)
这是代码
<?php
namespace Doctrine\DBAL;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\Exception\InvalidArgumentException;
use Closure;
use Exception;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Driver\Connection as DriverConnection;
use Doctrine\Common\EventManager;
use Doctrine\DBAL\Cache\ResultCacheStatement;
use Doctrine\DBAL\Cache\QueryCacheProfile;
use Doctrine\DBAL\Cache\ArrayStatement;
use Doctrine\DBAL\Cache\CacheException;
use Doctrine\DBAL\Driver\PingableConnection;
use Throwable;
use function array_key_exists;
use function array_merge;
use function func_get_args;
use function implode;
use function is_int;
use function is_string;
use function key;
class Connection implements DriverConnection
{
public const TRANSACTION_READ_UNCOMMITTED = TransactionIsolationLevel::READ_UNCOMMITTED;
public const TRANSACTION_READ_COMMITTED = TransactionIsolationLevel::READ_COMMITTED;
public const TRANSACTION_REPEATABLE_READ = TransactionIsolationLevel::REPEATABLE_READ;
public const TRANSACTION_SERIALIZABLE = TransactionIsolationLevel::SERIALIZABLE;
public const PARAM_INT_ARRAY = ParameterType::INTEGER + self::ARRAY_PARAM_OFFSET;
public const PARAM_STR_ARRAY = ParameterType::STRING + self::ARRAY_PARAM_OFFSET;
const ARRAY_PARAM_OFFSET = 100;
protected $_conn;
protected $_config;
protected $_eventManager;
protected $_expr;
private $_isConnected = false;
private $autoCommit = true;
private $_transactionNestingLevel = 0;
private $_transactionIsolationLevel;
private $_nestTransactionsWithSavepoints = false;
private $_params = [];
private $platform;
protected $_schemaManager;
protected $_driver;
private $_isRollbackOnly = false;
protected $defaultFetchMode = FetchMode::ASSOCIATIVE;
我的本地服务器PHP版本是7.2.0
Bluehost Php版本为7.0.0
与PHP版本相关的问题吗?
如何解决此问题?请帮助。...
答案 0 :(得分:11)
指定类常量可见性的功能仅在manual page的PHP 7.1中添加
注意:
自PHP 7.1.0起,类常量允许使用可见性修饰符。
因此在PHP 7.0服务器上,
public const TRANSACTION_READ_UNCOMMITTED ...
行中不应包含public
。它还说
类常量的默认可见性是public。
所以反正不需要公开。
答案 1 :(得分:1)
似乎您想定义一个常量变量。
我的指示是:</ p>
const CONSTANT = 'jkl';
我得到的错误:
syntax error, unexpected 'const' (T_CONST) in ...
我将该指令更改为:
define('CONSTANT', 'jkl');
echo CONSTANT;
输出:
jkl
方法'define'的语法:
define('variable_name', 'value_of_the_variable', [case-insensitive_constant_name = true/false]);
例如。
define('CONSTANT3', 'ghi', true);
echo CONSTANT3;
define('constant3', 'ghi'); //Defining 'constant3' again will give an error.
但是
define('CONSTANT3', 'ghi');
echo CONSTANT3;
define('constant3', 'ghi'); //This won't give an error.
echo constant3;
始终记住,常规变量应在其名称前使用'$'进行寻址,而常量变量应按我在上面的代码中所示的那样直接进行寻址。