Последняя активность 5 days ago

Turma 5 Desafios

Версия 4ba1c1b2c089511b755b3129c7a1b62957fc8eb6

desafio01.txt Исходник
1====================================================
2 DETALHES - Desafio Aula01 | NextGenPHP5
3====================================================
4
5----------------------------------------------------
61. Versão do PHP e Zend Engine
7----------------------------------------------------
8Comando para verificar:
9 docker compose exec php php -v
10
11Saída esperada (PHP 8.3 Alpine):
12 PHP 8.3.x (cli) (built: ...)
13 Copyright (c) The PHP Group
14 Zend Engine v4.3.x, Copyright (c) Zend Technologies
15
16----------------------------------------------------
172. Extensões instaladas
18----------------------------------------------------
19Comando para verificar:
20 docker compose exec php php -m
21
22Extensões padrão da imagem php:8.3-alpine:
23 Core, ctype, curl, date, dom, fileinfo, filter,
24 ftp, hash, iconv, json, libxml, mbstring, mysqlnd,
25 openssl, pcre, PDO, pdo_sqlite, Phar, posix,
26 readline, Reflection, session, SimpleXML, sodium,
27 SPL, sqlite3, standard, tokenizer, xml, xmlreader,
28 xmlwriter, zlib
29
30----------------------------------------------------
313. Localização do php.ini no contêiner
32----------------------------------------------------
33Comando para verificar:
34 docker compose exec php php --ini
35
36Caminho do php.ini na imagem php:8.3-alpine:
37 /usr/local/etc/php/php.ini
38
39----------------------------------------------------
404. Substituição do php.ini interno por volume
41----------------------------------------------------
42Configurado no docker-compose.yml com o mapeamento:
43 ./php.ini:/usr/local/etc/php/php.ini
44
45O arquivo local ./php.ini substitui o php.ini
46interno do contêiner via volume do Docker.
47
48----------------------------------------------------
495. Horário padrão do PHP ajustado
50----------------------------------------------------
51Configuração aplicada em ./php.ini:
52 date.timezone = America/Sao_Paulo
53
54Verificar no contêiner:
55 docker compose exec php php -r "echo date('d/m/Y H:i:s');"
56
57----------------------------------------------------
586. Limite de memória aumentado para 512MB
59----------------------------------------------------
60Configuração aplicada em ./php.ini:
61 memory_limit = 512M
62
63Verificar no contêiner:
64 docker compose exec php php -r "echo ini_get('memory_limit');"
65
66Saída esperada: 512M
67
68----------------------------------------------------
698. Correção do erro de exibição do projeto
70----------------------------------------------------
71Bug encontrado em ./index.php na função formatServices():
72
73 ANTES (incorreto):
74 return $services; // retornava o array, não a string HTML
75
76 DEPOIS (correto):
77 return $servicesHtml; // retorna a string HTML montada
78
79Acessar o projeto em: http://localhost:8011
80
81----------------------------------------------------
82DESAFIO EXTRA 1: Versão da extensão pdo_sqlite
83----------------------------------------------------
84Comando para verificar:
85 docker compose exec php php -r "
86 \$pdo = new PDO('sqlite::memory:');
87 \$stmt = \$pdo->query('SELECT sqlite_version()');
88 echo 'SQLite version: ' . \$stmt->fetchColumn() . PHP_EOL;
89 echo 'pdo_sqlite version acompanha SQLite: ' . phpversion('pdo_sqlite') . PHP_EOL;
90 "
91
92Alternativa via phpinfo:
93 docker compose exec php php -r "phpinfo();" | grep -i sqlite
94
95----------------------------------------------------
96DESAFIO EXTRA 2: Compilar o PHP
97----------------------------------------------------
98Passos disponíveis em: ../README.md
99
100Resumo:
101 1. git clone --depth=1 [email protected]:php/php-src.git
102 2. cd php-src && git checkout php-8.4.3
103 3. docker compose up -d && docker compose exec ubuntu bash
104 4. apt update && apt install -y pkg-config build-essential \
105 autoconf bison re2c libxml2-dev libsqlite3-dev
106 5. ./buildconf
107 6. ./configure --enable-debug
108 7. make -j$(nproc)
109 8. make test
110 9. make install
111
112====================================================
113 Para rodar o projeto
114====================================================
115 docker compose up -d
116 Acesse: http://localhost:8011
117====================================================
118
desafio02-Dockerfile Исходник
1FROM php:8.2-fpm
2
3# Instalar dependências do sistema
4RUN apt-get update && apt-get install -y \
5 libpq-dev \
6 && docker-php-ext-install pdo_pgsql opcache
7
8# Instalar xdebug via pecl
9RUN pecl install xdebug \
10 && docker-php-ext-enable xdebug
11
12# Copiar php.ini se necessário (será montado via volume no docker-compose, mas podemos copiar também)
13# COPY php.ini /usr/local/etc/php/conf.d/custom-php.ini
14
15WORKDIR /var/www/html
16
desafio02-docker-compose.yml Исходник
1version: '3.8'
2
3services:
4 nginx:
5 image: nginx:latest
6 ports:
7 - "8080:80"
8 volumes:
9 - ./src:/var/www/html
10 - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
11 depends_on:
12 - php
13 networks:
14 - app-network
15
16 php:
17 image: lira/php:8.2-fpm-aula02
18 volumes:
19 - ./src:/var/www/html
20 - ./php.ini:/usr/local/etc/php/conf.d/custom.ini
21 depends_on:
22 - db
23 networks:
24 - app-network
25
26 db:
27 image: postgres:15
28 environment:
29 POSTGRES_DB: mydatabase
30 POSTGRES_USER: user
31 POSTGRES_PASSWORD: password
32 ports:
33 - "5432:5432"
34 networks:
35 - app-network
36
37networks:
38 app-network:
39 driver: bridge
40
Не удалось отобразить файл. Просмотр всего файла.