Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Diversos erros ao tentar habilitar mb_strtoupper()

Bom dia/tarde/noite pessoal. Estou com um erro ao tentar utilizar a função mb_strtoupper: Uso sistema Ubuntu20.04 PHP 7.4.3

Exercício que eu estava tentando fazer para praticar:

banco.php:
<?php 
require_once './funcoes.php';
$contasCorrentes = [
  0 => [
    'titular'=> 'Osvaldo Erick Heitor da Paz',
    'saldo'=> 0.0
  ],
  1 => [
    'titular'=> "Bernardo Filipe Henrique Fogaça",
    'saldo'=> 0.0
  ],
  2 => [
    'titular' => "Erick Manuel Pedro Teixeira",
    'saldo' => 0.0
  ],
  3 => [
    'titular' => "Diego Pedro Henrique Barros",
    'saldo' => 0.0
  ],
  4 => [
    'titular' => "Benedito José Alves",
    'saldo' => 0.0
  ]
];
$contasCorrentes[6]=[
  'titular'=> 'Mariano Marciano Maia',
  'saldo'=>0.0
];
echo 'Antes do depósito: '.PHP_EOL;
foreach ($contasCorrentes as $numero => $conta){
  echo $numero.": "."{$conta['titular']}"." Saldo: "."{$conta['saldo']}".PHP_EOL;
}
echo PHP_EOL.'Depois do depósito: '.PHP_EOL;
deposita($contasCorrentes[0], 100);
foreach ($contasCorrentes as $numero => $conta){
  echo $numero.": "."{$conta['titular']}"." Saldo: "."{$conta['saldo']}".PHP_EOL;
}
echo 'Nova lista:';
foreach ($contasCorrentes as $numero => $conta){
    [$rico]=$contasCorrentes;
    echo $rico['titular'].PHP_EOL;
    // unset($contasCorrentes[0]);
}




funcoes.php:

<?php  
function deposita(&$conta,float $valor){
  if($valor>0){
    echo mb_strtoupper($conta['titular']) ;
    $conta['saldo'] = $conta['saldo'] + $valor;
    return;
  }
  echo "Erro";
}

Saída do programa:

Obtenho como saída vários erros como este abaixo mas não couberam todos aqui por conta do limite de caracteres do fórum:

PHP Warning: Failed loading Zend extension 'opcache.so' (tried: ./opcache.so (./opcache.so: cannot open shared object file: No such file or directory), ./opcache.so.so (./opcache.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'mbstring' (tried: ./mbstring (./mbstring: cannot open shared object file: No such file or directory), ./mbstring.so (./mbstring.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'pdo.so' (tried: ./pdo.so (./pdo.so: cannot open shared object file: No such file or directory), ./pdo.so.so (./pdo.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Em seguida dos erros mencionados acim o programa continua com esa saída: Antes do depósito: 0: Osvaldo Erick Heitor da Paz Saldo: 0 1: Bernardo Filipe Henrique Fogaça Saldo: 0 2: Erick Manuel Pedro Teixeira Saldo: 0 3: Diego Pedro Henrique Barros Saldo: 0 4: Benedito José Alves Saldo: 0 6: Mariano Marciano Maia Saldo: 0

Depois do depósito: PHP Fatal error: Uncaught Error: Call to undefined function mb_strtoupper() in /home/gabriel/Documents/praticando/php/projeto1php/funcoes.php:13 Stack trace:

#0 /home/gabriel/Documents/praticando/php/projeto1php/banco.php(40): deposita()

#1 {main} thrown in /home/gabriel/Documents/praticando/php/projeto1php/funcoes.php on line 13

1 resposta
solução!

Consegui resolver desfazendo o que tinha feito dentro do php.ini e mudando algumas coisas da lógica do projeto:

Primeiro entrei no php.ini novamente, devolvi o ; antes do mbstring, devolvi o ; para o "extension_dir=./"

Voltei para o código e ficou assim :

banco.php:

<?php 

require_once './funcoes.php';


$contasCorrentes = [
  0 => [
    'titular'=> 'Osvaldo Erick Heitor da Paz',
    'saldo'=> 0.0
  ],
  1 => [
    'titular'=> "Bernardo Filipe Henrique Fogaça",
    'saldo'=> 0.0
  ],
  2 => [
    'titular' => "Erick Manuel Pedro Teixeira",
    'saldo' => 0.0
  ],
  3 => [
    'titular' => "Diego Pedro Henrique Barros",
    'saldo' => 0.0
  ],
  4 => [
    'titular' => "Benedito José Alves",
    'saldo' => 0.0
  ]
];

$contasCorrentes[6]=[
  'titular'=> 'Mariano Marciano Maia',
  'saldo'=>0.0
];
echo 'Antes do depósito: '.PHP_EOL;
foreach ($contasCorrentes as $numero => $conta){
  echo $numero.": "."{$conta['titular']}"." Saldo: "."{$conta['saldo']}".PHP_EOL;
}

echo PHP_EOL.'Depois do depósito: '.PHP_EOL;

deposita($contasCorrentes[0], 100);

foreach ($contasCorrentes as $numero => $conta){
  echo $numero.": "."{$conta['titular']}"." Saldo: "."{$conta['saldo']}".PHP_EOL;
}

echo 'Nova lista:';

foreach ($contasCorrentes as $numero => $conta){

    [$rico]=$contasCorrentes;
    echo $rico['titular'].PHP_EOL;

}


funcoes.php:

<?php  

function deposita(&$conta,float $valor){
  if($valor>0){
    $conta['titular'] = mb_strtoupper($conta['titular']) ;
    echo $conta['titular'];

    $conta['saldo'] = $conta['saldo'] + $valor;
    return;
  }
  echo "Erro";
}

Por algum motivo a mbstring não precisa ser atualizada para utilizar no ubuntu.