12
respostas

Erro ao habilitar biblioteca

Boa tarde,

Gostaria de identificar o erro, pois não consigo liberar o acesso à essa biblioteca do multibyte string (o mb).

Meu código está assim:

<?php

require_once 'funcoes.php';

$contasCorrentes = [
    '139.879.879-84' => [
        'titular' => 'Maria',
        'saldo' => 10000
], 
    '562.342.342-33' => [
        'titular' => 'Alberto',
        'saldo' => 300
], 
    '980.857.750-29' => [
        'titular' => 'Vinicius',
        'saldo' => 100
    ]
];

$contasCorrentes['139.879.879-84'] = sacar ($contasCorrentes['139.879.879-84'], 500);

$contasCorrentes['980.857.750-29'] = depositar (
$contasCorrentes['980.857.750-29'], 900);

$contasCorrentes['562.342.342-33'] = depositar (
$contasCorrentes['562.342.342-33'], 200);


unset($contasCorrentes['562.342.342-33']);

titularComLetrasMaiusculas($contasCorrentes['980.857.750-29']);

Na outra aba "funções" está assim:

<?php

function sacar (array $conta, float $valorAsacar): array
{
    if ($valorAsacar > $conta ['saldo']) {
        exibeMensagem ("Você não tem saldo suficiente");
    } else {
        $conta ['saldo'] -= $valorAsacar;
    }
    return $conta;
}

function exibeMensagem (string $mensagem) 
{
    echo "$mensagem" . '<br>';
}

function depositar (array $conta, float $valorAdepositar): array 
{
    if ($valorAdepositar > 0) {
        $conta['saldo'] += $valorAdepositar;
    } else {
        exibeMensagem ("Depositos precisam ser positivos");
    }
    return $conta;
}

function titularComLetrasMaiusculas (array &$conta)
{
    $conta['titular'] = mb_strtoupper($conta['titular']);
}

function exibeConta (array $conta)
{
    ['titular' => $titular, 'saldo' => $saldo] = $conta;
    echo "<li>Titular: $titular. Saldo: $saldo</li>";
}

E esse é o erro que aparece no prompt:

C:\Users\alissonos\Desktop\Tudo de Alisson\Curso Alura\php-primeiros-passos\avancando>php banco.php

Fatal error: Uncaught Error: Call to undefined function mb_strtoupper() in C:\Users\alissonos\Desktop\Tudo de Alisson\Curso Alura\php-primeiros-passos\avancando\funcoes.php:30
Stack trace:
#0 C:\Users\alissonos\Desktop\Tudo de Alisson\Curso Alura\php-primeiros-passos\avancando\banco.php(31): titularComLetrasMaiusculas(Array)
#1 {main}
  thrown in C:\Users\alissonos\Desktop\Tudo de Alisson\Curso Alura\php-primeiros-passos\avancando\funcoes.php on line 30

C:\Users\alissonos\Desktop\Tudo de Alisson\Curso Alura\php-primeiros-passos\avancando>   

Please, help me.

12 respostas

Alisson, sempre que for postar códigos ou saídas do prompt de comando, coloque entre 3 crases (`). Dessa forma o código fica formatado. Já editei sua mensagem pra que eu conseguisse ler. :-D

Sobre o mbstring, você já descomentou a linha da extensão mbstring no seu arquivo php.ini?

Obrigado, Vinícius, pela resposta. Então, já descomentei sim. 

Tanto o:

extension=mbstring

, como o 

; On windows:
extension_dir = "ext"

rsrsrs

Pode colocar só o código entre crases, Alisson. Não a mensagem toda. :-D

Mostra pra mim a saída do comando php --ini, por favor?

Mas enquanto isso, pra você continuar o treinamento, é só tirar o mb_ da frente da função e usar a função strtoupper mesmo. Vai ter o mesmo comportamento, só ignorando os acentos.

Acho que vc quis disser assim, certo? :)

C:\Users\alissonos\Desktop\Tudo de Alisson\Curso Alura\PHP\avancando>php --ini
Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File:         (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

Perfeito, Alisson.

Repara que o PHP não achou nenhum arquivo php.ini

Onde você instalou o PHP e que arquivo você editou pra tentar habilitar a extensão mbstring

Vinicius, o php está instalado na mesma pasta dos arquivos que criamos durante o curso. E o arquivo que habilito é o que fica na pasta onde o PHP foi instalado, o php.ini - que está como tipo: parâmetros de configuração.

Alisson, aparentemente você tem mais de uma instalação do PHP, então. Talvez com XAMPP, talvez com Laradock, não sei. Porque o PHP que você está executando está procurando o php.ini na pasta C:\Windows, entendeu?

Vinícius, realmente tinha o XAMPP instalado na máquina, mas não está nesse caminho C:\Windows, mesmo assim o desinstalei, blz. Porém o erro continua, já procurei nesse caminho - C:\Windows - algum programa paralelo ao XAMPP e não encontrei. Pergunta, tem como direcionar o PHP a procurar o arquivo php.ini na pasta onde eu o instalei?

Alisson, eu honestamente não sei como essa parte funciona no Windows. Minha sugestão pra resolver isso rápido: Copia o arquivo php.ini já alterado pra pasta C:\Windows

Conseguiu resolver, Alisson?

Consegui não, coloquei o php.ini na pasta C:\Windows e permaneceu com o mesmo o erro. Estou avançando nos cursos mesmo assim; isso não pode ser um empecilho. Mas obrigado pela disponibilidade. Depois tudo se resolve srsr...

É, você não vai precisar dessa extensão pro treinamento não. Mas bem estranho não conseguir. Dá uma pesquisada sobre como desinstalar completamente o XAMPP. Deve ter algum resíduo no registro do Windows ou algo assim...