14
votes

I have got the following error in my Laravel project after uploading in Bluehost cPanel. But in local server there is no error.

Parse error: syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE)

Here is the code

<?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;

My local server PHP version is 7.2.0

Bluehost PHP version is 7.0.0

Is that PHP version related problem?

How to fix this?

2
I vote to reopen this question, because the alleged duplicate question doesn't address this error message. A simple search for 'T_CONST' reveals this. - Olaf Dietsche

2 Answers

34
votes

The ability to specify the visibility of class constants was only added in PHP 7.1, from the manual page

Note:

As of PHP 7.1.0 visibility modifiers are allowed for class constants.

So on the PHP 7.0 server, the

public const TRANSACTION_READ_UNCOMMITTED ...

lines should not have the public on them. It also says that

The default visibility of class constants is public.

So public is not needed anyway.

1
votes

It seems like you want to define a constant variable.

My instruction was :

const CONSTANT = 'jkl';

The error I got :

syntax error, unexpected 'const' (T_CONST) in ...

I changed that instruction to :

define('CONSTANT', 'jkl');
echo CONSTANT;

output :

jkl

Syntax of the method 'define' :

define('variable_name', 'value_of_the_variable', [case-insensitive_constant_name = true/false]);

For eg.

define('CONSTANT3', 'ghi', true);
echo CONSTANT3;
define('constant3', 'ghi'); //Defining 'constant3' again will give an error.

But

define('CONSTANT3', 'ghi');
echo CONSTANT3;
define('constant3', 'ghi'); //This won't give an error.
echo constant3;

Always remember that regular variables should be addressed by using '$' before their name but constant variables should be addressed directly as shown by me in the code above.