Zuletzt aktiv 5 days ago

Turma 5 Desafios

l's Avatar Fernando Lira hat die Gist bearbeitet 5 days ago. Zu Änderung gehen

Keine Änderungen

l's Avatar Fernando Lira hat die Gist bearbeitet 5 days ago. Zu Änderung gehen

2 files changed, 0 insertions, 0 deletions

desafio03-coverage.png(Datei erstellt)

Änderungen an Binärdateien werden nicht angezeigt

desafio03.zip(Datei erstellt)

Änderungen an Binärdateien werden nicht angezeigt

l's Avatar l hat die Gist bearbeitet 5 days ago. Zu Änderung gehen

2 files changed, 7 deletions

desafio02-Dockerfile

@@ -1,15 +1,10 @@
1 1 FROM php:8.2-fpm
2 2
3 - # Instalar dependências do sistema
4 3 RUN apt-get update && apt-get install -y \
5 4 libpq-dev \
6 5 && docker-php-ext-install pdo_pgsql opcache
7 6
8 - # Instalar xdebug via pecl
9 7 RUN pecl install xdebug \
10 8 && docker-php-ext-enable xdebug
11 9
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 -
15 10 WORKDIR /var/www/html

desafio02-docker-compose.yml

@@ -1,5 +1,3 @@
1 - version: '3.8'
2 -
3 1 services:
4 2 nginx:
5 3 image: nginx:latest

l's Avatar Fernando Lira hat die Gist bearbeitet 5 days ago. Zu Änderung gehen

3 files changed, 54 insertions

desafio02-Dockerfile(Datei erstellt)

@@ -0,0 +1,15 @@
1 + FROM php:8.2-fpm
2 +
3 + # Instalar dependências do sistema
4 + RUN apt-get update && apt-get install -y \
5 + libpq-dev \
6 + && docker-php-ext-install pdo_pgsql opcache
7 +
8 + # Instalar xdebug via pecl
9 + RUN 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 +
15 + WORKDIR /var/www/html

desafio02-docker-compose.yml(Datei erstellt)

@@ -0,0 +1,39 @@
1 + version: '3.8'
2 +
3 + services:
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 +
37 + networks:
38 + app-network:
39 + driver: bridge

desafio02-docker-ps.png(Datei erstellt)

Änderungen an Binärdateien werden nicht angezeigt

l hat die Gist bearbeitet 1 week ago. Zu Änderung gehen

1 file changed, 117 insertions

desafio01.txt(Datei erstellt)

@@ -0,0 +1,117 @@
1 + ====================================================
2 + DETALHES - Desafio Aula01 | NextGenPHP5
3 + ====================================================
4 +
5 + ----------------------------------------------------
6 + 1. Versão do PHP e Zend Engine
7 + ----------------------------------------------------
8 + Comando para verificar:
9 + docker compose exec php php -v
10 +
11 + Saí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 + ----------------------------------------------------
17 + 2. Extensões instaladas
18 + ----------------------------------------------------
19 + Comando para verificar:
20 + docker compose exec php php -m
21 +
22 + Extensõ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 + ----------------------------------------------------
31 + 3. Localização do php.ini no contêiner
32 + ----------------------------------------------------
33 + Comando para verificar:
34 + docker compose exec php php --ini
35 +
36 + Caminho do php.ini na imagem php:8.3-alpine:
37 + /usr/local/etc/php/php.ini
38 +
39 + ----------------------------------------------------
40 + 4. Substituição do php.ini interno por volume
41 + ----------------------------------------------------
42 + Configurado no docker-compose.yml com o mapeamento:
43 + ./php.ini:/usr/local/etc/php/php.ini
44 +
45 + O arquivo local ./php.ini substitui o php.ini
46 + interno do contêiner via volume do Docker.
47 +
48 + ----------------------------------------------------
49 + 5. Horário padrão do PHP ajustado
50 + ----------------------------------------------------
51 + Configuração aplicada em ./php.ini:
52 + date.timezone = America/Sao_Paulo
53 +
54 + Verificar no contêiner:
55 + docker compose exec php php -r "echo date('d/m/Y H:i:s');"
56 +
57 + ----------------------------------------------------
58 + 6. Limite de memória aumentado para 512MB
59 + ----------------------------------------------------
60 + Configuração aplicada em ./php.ini:
61 + memory_limit = 512M
62 +
63 + Verificar no contêiner:
64 + docker compose exec php php -r "echo ini_get('memory_limit');"
65 +
66 + Saída esperada: 512M
67 +
68 + ----------------------------------------------------
69 + 8. Correção do erro de exibição do projeto
70 + ----------------------------------------------------
71 + Bug 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 +
79 + Acessar o projeto em: http://localhost:8011
80 +
81 + ----------------------------------------------------
82 + DESAFIO EXTRA 1: Versão da extensão pdo_sqlite
83 + ----------------------------------------------------
84 + Comando 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 +
92 + Alternativa via phpinfo:
93 + docker compose exec php php -r "phpinfo();" | grep -i sqlite
94 +
95 + ----------------------------------------------------
96 + DESAFIO EXTRA 2: Compilar o PHP
97 + ----------------------------------------------------
98 + Passos disponíveis em: ../README.md
99 +
100 + Resumo:
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 + ====================================================
Neuer Älter