Tag Archives: php

PHP update

Zanimljiv dan danas 🙂 PHP.net je objavio da je zakrpio dve kritične rupe i da će nove verzije PHP-a da objavi u četiri popodne po našem vremenu. PHP krpi samo zvanično podržane verzije što su 8.2 pa na više. Jedan od naših projekata je bio na PHP-u 7.4 i Laravelu 8 pa sam prvo krenuo to da nadograđujem na PHP 8.2 i Laravel 9. Posle je bilo lako na svim projektima apdejtovati PHP na nove verzije. Ostao je jedan stari veb server na Ubuntuu 20.04 i sa PHP-om 7.4 koji sam krenuo da bekapujem i nadograđujem kada sam saznao (Klod mi je rekao) da postoji Ubuntu pro, podrška za stare operativne sisteme i da su oni pečovali PHP 7.4. Bilo je potrebno samo da se registrujem kao persona i da dobijem besplatan token za nadogradnju tako da je i taj server zakrpljen. Kako bilo, nastavljam sutra sa apgrejdom celog servera.

Logo by KNHVuNTzR

GooseRSS

Zanimljiv projekat. Kreira RSS fid od Jućub kanala tako da u RSS čitaču možete da vidite kada se pojavi neki novi video na dotičnom kanalu. Nezgodacija je što mora da se generiše fid kanal po kanal pa kreiranje fidova može da potraje ako pratite desetine kanala.

Composer security advisories

Verzija 2.9 Kompozera ima unapređena bezbednosna upozorenja. Na primer, sada podrazumevano nije moguće instalirati PHP pakete koji imaju propuste. Postoji i opcija zabrane instaliranja “napuštenih” paketa, ali to nije u startu uključeno. Zanimljivo, sećam se da sam pravio skript koji je tražio maliciozne npm pakete u projektu 🙂

Laravel Sail

OK, isprobao sam i Laravel Sail. Pre svega, ako hoćemo da koristimo SQLite bazu u projektu, moramo u lokalu da instaliramo php-sqlite ekstenziju i da je uključimo u php.ini:

sudo pacman -S php-sqlite
sudo nano /etc/php/php.ini # omogućiti pdo_sqlite i sqlite3

Onda kreiramo projekat u tekućem direktorijumu

composer create-project --prefer-dist laravel/laravel .

pa instaliramo Sail:

php artisan sail:install

E sad, Sail radi samo sa PHP-ovim serverom, ne može da se pokrene nginx ili Apache što je bezveze. Ako planiramo da projekat ikada ode u produkciju, neće se vrteti na PHP serveru 🙂 Tako da… nije ovo za mene. Držim se mog Docker compose-a.

You’ve hit on a valid point. Sail is essentially a convenience wrapper around Docker Compose. Here’s the honest breakdown:

What Sail Actually Provides

 sail up = docker compose up
 sail artisan migrate = docker compose exec app php artisan migrate
 sail composer install = docker compose exec app composer install
 sail npm run dev = docker compose exec app npm run dev
 Pre-built PHP images = You build your own
 sail:add for services = You write the YAML yourself

Sail Makes Sense When:

 • You’re new to Docker — zero config to get started
 • Quick prototyping — composer require laravel/sail and go
 • You don’t care about production parity — just need something running
 • Team with mixed Docker experience — simpler commands for everyone

Plain Docker Compose Makes Sense When:

 • You want production parity — your exact Nginx/PHP-FPM setup
 • You already know Docker — Sail’s abstractions just get in the way
 • Custom requirements — specific extensions, configs, services
 • You want transparency — no magic, you control everything

My Recommendation

Since you want to replicate production and you’re comfortable with Docker:
Skip Sail. Use plain Docker Compose.
Create your own docker-compose.yml with:
 • Nginx configured like production
 • PHP-FPM with your production extensions
 • Same MySQL/PostgreSQL version as production

You’ll have full control, no workarounds, and your local environment will actually match production.

git merge development

Nakupi se dosta izmena na razvojnoj grani pa se uvek štrecnem kada to treba spojiti u master i izbildovati produkciju 🙂 Uglavnom je prošlo bez problema. Dve Artisan komande nisu radile kako treba i to zbog nekonzistentnosti podataka u produkcionim bazama što je bilo lako rešivo i nije uticalo na funkcionisanje sistema. Jedan jedini problem je bio kod registracije novih korisnika ali i to smo brzo zakrpili.

Enums

Apgrejdovali smo PHP na jednom od projekata pa se sad upoznajem sa enumima 🙂

Do sada smo u ovakvim situacijama koristili konstante, sada imamo enkapsulirani tip podataka. Enumi imaju predefinisane metode kao što su name, value i cases ali možemo da definišemo i sopstvene.