==================================================== DETALHES - Desafio Aula01 | NextGenPHP5 ==================================================== ---------------------------------------------------- 1. Versão do PHP e Zend Engine ---------------------------------------------------- Comando para verificar: docker compose exec php php -v Saída esperada (PHP 8.3 Alpine): PHP 8.3.x (cli) (built: ...) Copyright (c) The PHP Group Zend Engine v4.3.x, Copyright (c) Zend Technologies ---------------------------------------------------- 2. Extensões instaladas ---------------------------------------------------- Comando para verificar: docker compose exec php php -m Extensões padrão da imagem php:8.3-alpine: Core, ctype, curl, date, dom, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib ---------------------------------------------------- 3. Localização do php.ini no contêiner ---------------------------------------------------- Comando para verificar: docker compose exec php php --ini Caminho do php.ini na imagem php:8.3-alpine: /usr/local/etc/php/php.ini ---------------------------------------------------- 4. Substituição do php.ini interno por volume ---------------------------------------------------- Configurado no docker-compose.yml com o mapeamento: ./php.ini:/usr/local/etc/php/php.ini O arquivo local ./php.ini substitui o php.ini interno do contêiner via volume do Docker. ---------------------------------------------------- 5. Horário padrão do PHP ajustado ---------------------------------------------------- Configuração aplicada em ./php.ini: date.timezone = America/Sao_Paulo Verificar no contêiner: docker compose exec php php -r "echo date('d/m/Y H:i:s');" ---------------------------------------------------- 6. Limite de memória aumentado para 512MB ---------------------------------------------------- Configuração aplicada em ./php.ini: memory_limit = 512M Verificar no contêiner: docker compose exec php php -r "echo ini_get('memory_limit');" Saída esperada: 512M ---------------------------------------------------- 8. Correção do erro de exibição do projeto ---------------------------------------------------- Bug encontrado em ./index.php na função formatServices(): ANTES (incorreto): return $services; // retornava o array, não a string HTML DEPOIS (correto): return $servicesHtml; // retorna a string HTML montada Acessar o projeto em: http://localhost:8011 ---------------------------------------------------- DESAFIO EXTRA 1: Versão da extensão pdo_sqlite ---------------------------------------------------- Comando para verificar: docker compose exec php php -r " \$pdo = new PDO('sqlite::memory:'); \$stmt = \$pdo->query('SELECT sqlite_version()'); echo 'SQLite version: ' . \$stmt->fetchColumn() . PHP_EOL; echo 'pdo_sqlite version acompanha SQLite: ' . phpversion('pdo_sqlite') . PHP_EOL; " Alternativa via phpinfo: docker compose exec php php -r "phpinfo();" | grep -i sqlite ---------------------------------------------------- DESAFIO EXTRA 2: Compilar o PHP ---------------------------------------------------- Passos disponíveis em: ../README.md Resumo: 1. git clone --depth=1 git@github.com:php/php-src.git 2. cd php-src && git checkout php-8.4.3 3. docker compose up -d && docker compose exec ubuntu bash 4. apt update && apt install -y pkg-config build-essential \ autoconf bison re2c libxml2-dev libsqlite3-dev 5. ./buildconf 6. ./configure --enable-debug 7. make -j$(nproc) 8. make test 9. make install ==================================================== Para rodar o projeto ==================================================== docker compose up -d Acesse: http://localhost:8011 ====================================================