Ir para conteúdo
Fórum Script Brasil
  • 0

syntax error, unexpected '$'


fhp-92@hotmail.com

Pergunta

Prezados, boa tarde a todos.

Sou iniciante em php e estou tendo dificuldades com um erro simples, embora não consigo resolver.

Estou implementando uma ferramenta open source chamada http://compalex.net/ que faz comparação entre bancos de dados, no entanto, quando estou passando as variáveis apresenta o seguinte erro: 

Warning: syntax error, unexpected '$' in C:\xampp\htdocs\compare/environment.php on line 4 in C:\xampp\htdocs\compare\config.php on line 12
Param DATABASE_DRIVER not set in file C:\xampp\htdocs\compare/environment.php 

<?php 
 //ARQUIVO QUE ESTOU PASSANDO AS VARIAVEIS, AINDA VOU DEIXAR AS STRINGS DINAMICAMENTE

 $DATABASE_DRIVER = 'mysql';
 $DATABASE_ENCODING = 'utf8';
 $SAMPLE_DATA_LENGTH = '100';

//Parâmetros de conexão primária 
 $DATABASE_HOST = 'localhost';
 $DATABASE_NAME = 'compalex_dev';
 $DATABASE_USER = 'root';
 $DATABASE_PASSWORD = '';
 $DATABASE_DESCRIPTION = 'Banco de dados do desenvolvedor';

//Parâmetros de conexão secundária
 $DATABASE_HOST_SECONDARY = 'localhost';
 $DATABASE_NAME_SECONDARY = 'compalex_prod';
 $DATABASE_USER_SECONDARY = 'raiz';
 $DATABASE_PASSWORD_SECONDARY = '';
 $DATABASE_DESCRIPTION_SECONDARY = 'Banco de dados de produção';

?>

Agora segue o arquivo de config.

<?php

define('DIR_ROOT', dirname(__FILE__));
define('ENVIRONMENT_FILE', DIR_ROOT . '/environment.php');
define('DRIVER_DIR', DIR_ROOT . '/driver/');
define('TEMPLATE_DIR', DIR_ROOT . '/template/');

if(isset($_ENV['DATABASE_DRIVER']) && isset($_ENV['DATABASE_HOST']) && isset($_ENV['DATABASE_HOST_SECONDARY'])){
    $params = $_ENV;
}else{
    if (!file_exists(ENVIRONMENT_FILE)) die('File "' . ENVIRONMENT_FILE . '" not exist. Please create file.');
    $params = parse_ini_file(ENVIRONMENT_FILE, false, INI_SCANNER_RAW);
}

$requiredParams = array(
    'DATABASE_DRIVER',
    'DATABASE_ENCODING',
    'SAMPLE_DATA_LENGTH',

    'DATABASE_HOST',
    'DATABASE_PORT',
    'DATABASE_NAME',
    'DATABASE_USER',
    'DATABASE_PASSWORD',
    'DATABASE_DESCRIPTION',

    'DATABASE_HOST_SECONDARY',
    'DATABASE_PORT_SECONDARY',
    'DATABASE_NAME_SECONDARY',
    'DATABASE_USER_SECONDARY',
    'DATABASE_PASSWORD_SECONDARY',
    'DATABASE_DESCRIPTION_SECONDARY',
);

array_map(function ($name) use ($params) {
    if (!isset($params[$name])) {
        die('Param ' . $name . ' not set in file ' . ENVIRONMENT_FILE);
    }else{
        define($name, $params[$name]);
    }
}, $requiredParams);

define('FIRST_DSN',  DATABASE_DRIVER.'://'.DATABASE_USER.':'.DATABASE_PASSWORD.'@'.DATABASE_HOST.':'.DATABASE_PORT.'/'.DATABASE_NAME);
define('SECOND_DSN',  DATABASE_DRIVER.'://'.DATABASE_USER_SECONDARY.':'.DATABASE_PASSWORD_SECONDARY.'@'.DATABASE_HOST_SECONDARY.':'.DATABASE_PORT_SECONDARY.'/'.DATABASE_NAME_SECONDARY);

Se alguém puder me ajudar por favor

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Em 11/10/2021 em 12:44, fhp-92@hotmail.com disse:

Warning: syntax error, unexpected '$' in C:\xampp\htdocs\compare/environment.php on line 4

Qual é o conteúdo deste arquivo?
Mais especificamente, qual é a linha 4?

Link para o comentário
Compartilhar em outros sites

  • 0
9 horas atrás, lowys disse:

Qual é o conteúdo deste arquivo?
Mais especificamente, qual é a linha 4?

Bom dia, Lowys.

O conteúdo do arquivo (environment.php) passará as variáveis dos parâmetros de conexão, para comparar as bases de dados. A linha 4 se refere aonde começa o script, nesse caso, o driver de conexão com o banco de dados.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz o teste por aqui, e o PHP só executa o config.php se eu tirar todos os $ do environment.php - em compensação surgiu um novo erro:

Param DATABASE_PORT not set in file C:\wamp64\www\frank/environment.php

Não dá para testar o environment.php senão o PHP vai reclamar que tem um token = sobrando.

Eu gostei desse código, não conhecia a função define. Já a função parse_ini_file eu não consegui entender, no Google encontrei com o nome do arquivo, ou o nome do arquivo e a opção de retorno. O seu é o único caso que tem três parâmetros.

Aqui está a mesma listagem (ele só está compactada, mas é o mesmo, mas dessa vez sem o $ nos parâmetros do environment.php)

environment.php
--------------------------------------
<?php 
//ARQUIVO QUE ESTOU PASSANDO AS VARIAVEIS, AINDA VOU DEIXAR AS STRINGS DINAMICAMENTE
DATABASE_DRIVER = 'mysql';
DATABASE_ENCODING = 'utf8';
SAMPLE_DATA_LENGTH = '100';
//Parâmetros de conexão primária 
DATABASE_HOST = 'localhost';
DATABASE_NAME = 'compalex_dev';
DATABASE_USER = 'root';
DATABASE_PASSWORD = '';
DATABASE_DESCRIPTION = 'Banco de dados do desenvolvedor';
//Parâmetros de conexão secundária
DATABASE_HOST_SECONDARY = 'localhost';
DATABASE_NAME_SECONDARY = 'compalex_prod';
DATABASE_USER_SECONDARY = 'raiz';
DATABASE_PASSWORD_SECONDARY = '';
DATABASE_DESCRIPTION_SECONDARY = 'Banco de dados de produção';
?>

config.php
-------------------------------------------------------
<?php
define('DIR_ROOT', dirname(__FILE__));
define('ENVIRONMENT_FILE', DIR_ROOT . '/environment.php'); 
define('DRIVER_DIR', DIR_ROOT . '/driver/');
define('TEMPLATE_DIR', DIR_ROOT . '/template/');
if(isset($_ENV['DATABASE_DRIVER']) && isset($_ENV['DATABASE_HOST']) && isset($_ENV['DATABASE_HOST_SECONDARY'])){
    $params = $_ENV;}else{
		if (!file_exists(ENVIRONMENT_FILE)) die('File "' . ENVIRONMENT_FILE . '" not exist. Please create file.');
		$params = parse_ini_file(ENVIRONMENT_FILE, false, INI_SCANNER_RAW);}
$requiredParams = array(
    'DATABASE_DRIVER',
    'DATABASE_ENCODING',
    'SAMPLE_DATA_LENGTH',
    'DATABASE_HOST',
    'DATABASE_PORT',
    'DATABASE_NAME',
    'DATABASE_USER',
    'DATABASE_PASSWORD',
    'DATABASE_DESCRIPTION',
    'DATABASE_HOST_SECONDARY',
    'DATABASE_PORT_SECONDARY',
    'DATABASE_NAME_SECONDARY',
    'DATABASE_USER_SECONDARY',
    'DATABASE_PASSWORD_SECONDARY',
    'DATABASE_DESCRIPTION_SECONDARY',);
array_map(function ($name) use ($params) {
   if (!isset($params[$name])) {        die('Param ' . $name . ' not set in file ' . ENVIRONMENT_FILE);}else{
      define($name, $params[$name]);}}, $requiredParams);
define('FIRST_DSN',  DATABASE_DRIVER.'://'.DATABASE_USER.':'.DATABASE_PASSWORD.'@'.DATABASE_HOST.':'.DATABASE_PORT.'/'.DATABASE_NAME);
define('SECOND_DSN',  DATABASE_DRIVER.'://'.DATABASE_USER_SECONDARY.':'.DATABASE_PASSWORD_SECONDARY.'@'.DATABASE_HOST_SECONDARY.':'.DATABASE_PORT_SECONDARY.'/'.DATABASE_NAME_SECONDARY);

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...