- Stefanescu Mihai a postat in Paginare in PHP
- johhny a postat in Paginare in PHP
- Stefanescu Mihai a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- madalin a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- Stefanescu Mihai a postat in Featureuri site
Comenzile Linux pe care le folosesc zilnic ca developer PHP
Terminale deschise: de obicei 4-5 simultan. Nu pentru că e cool, ci pentru că fiecare face ceva diferit — una urmărește log-urile live, una e conectată via SSH la server, una rulează teste, alta e în directorul proiectului. Am ajuns să lucrez mai repede în terminal decât în orice interfață grafică pentru task-urile astea. Iată comenzile care mi-au intrat în ADN.
`grep` — cauta în fișiere ca un profesionist
grep e primul lucru la care apelez când trebuie să găsesc ceva.
# Caută un string în directorul curent și subdirectoare
grep -r "getUserById" ./src/
# Case-insensitive
grep -ri "database" ./config/
# Arată numărul liniei
grep -rn "TODO" ./app/
# Arată doar numele fișierelor, nu și conținutul
grep -rl "deprecated" ./src/
# Caută cu regex — toate email-urile din logs
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" storage/logs/laravel.log
# Exclude directoare (util pentru a ignora vendor/)
grep -r "password" ./app/ --include="*.php" --exclude-dir=vendor
# Context — arată 3 linii înainte și după match
grep -rn -C 3 "Exception" storage/logs/laravel.log | tail -50Folosesc `grep -rn` aproape zilnic pentru a găsi unde e folosit o metodă sau o clasă înainte să o modific.
`find` — găsești orice fișier sau director
# Găsește toate fișierele PHP modificate în ultimele 24 de ore
find ./app -name "*.php" -mtime -1
# Fișiere mai mari de 10MB
find /var/log -size +10M
# Găsește și șterge log-urile vechi de 30 de zile
find /var/log/app -name "*.log" -mtime +30 -delete
# Găsește fișiere cu permisiuni greșite
find ./storage -not -perm 755 -type d
find ./storage -not -perm 644 -type f
# Găsește fișiere goale
find ./temp -empty -type f
# Execută o comandă pe fiecare fișier găsit
find ./app -name "*.php" -exec php -l {} \;
# (verifică sintaxa PHP în toate fișierele)`tail -f` — urmărești log-urile live
Ăsta e deschis permanent când fac debug pe server:
# Urmărești în timp real tail -f /var/log/nginx/error.log # Laravel logs tail -f storage/logs/laravel.log # Urmărești mai multe fișiere simultan tail -f /var/log/nginx/error.log storage/logs/laravel.log # Ultimele 100 de linii + follow tail -n 100 -f storage/logs/laravel.log # Filtrezi direct — doar erorile tail -f storage/logs/laravel.log | grep -i "error\|exception\|fatal"
Combinația `tail -f | grep` e una din cele mai utile pe care le știu. Pe un server cu trafic, log-urile defilează repede — filtrul te ajută să vezi doar ce contează.
`ps aux` și procesele
# Lista tuturor proceselor ps aux # Caută procesele PHP ps aux | grep php # Procesele sortate după consum de memorie ps aux --sort=-%mem | head -20 # Procesele sortate după CPU ps aux --sort=-%cpu | head -20 # Oprești un proces după PID kill 12345 # Forțat kill -9 12345 # Oprești toate procesele php-fpm pkill php-fpm # Verifici dacă un port e ocupat ss -tlnp | grep :8080 # sau lsof -i :8080
Când un request pare blocat sau serverul nu răspunde, primul lucru e `ps aux | grep php` să văd câte procese php-fpm rulează și dacă vreunul e zombie.
SSH și SCP — lucrul de la distanță
# Conectare simplă ssh [email protected] # Cu cheie privată specifică ssh -i ~/.ssh/id_rsa_production [email protected] # Port non-standard ssh -p 2222 [email protected] # Tunel SSH — accesezi baza de date remote ca și cum ar fi locală ssh -L 3307:localhost:3306 [email protected] # Acum te conectezi la MySQL remote via localhost:3307 # Copiezi un fișier pe server scp ./app/config.php [email protected]:/var/www/html/app/ # Copiezi un director întreg scp -r ./app/ [email protected]:/var/www/html/ # Descarcă ceva de pe server scp [email protected]:/var/log/app/error.log ./local_error.log # rsync — mai eficient decât scp pentru sincronizări rsync -avz --progress ./app/ [email protected]:/var/www/html/app/
Tunel-ul SSH pentru baza de date e super util: poți folosi TablePlus sau DBeaver pentru a inspecta o bază de date de producție fără să o expui public.
`chmod` și `chown` — permisiunile
# Setezi permisiunile pentru Laravel chmod -R 755 /var/www/html chmod -R 775 /var/www/html/storage chmod -R 775 /var/www/html/bootstrap/cache # Dă owner www-data (nginx/apache user) chown -R www-data:www-data /var/www/html # Tu rămâi owner, dar www-data e în grup chown -R $USER:www-data /var/www/html chmod -R 775 /var/www/html/storage # Verifici permisiunile ls -la ./storage/
Cel mai frecvent bug pe un server nou: `Permission denied` în storage sau cache. `chmod -R 775 storage/ bootstrap/cache/` rezolvă de obicei.
`cron` — task-uri programate
# Editezi crontab-ul crontab -e # Listezi task-urile existente crontab -l # Exemple de cron jobs # ┌──────── minut (0-59) # │ ┌────── oră (0-23) # │ │ ┌──── zi din lună (1-31) # │ │ │ ┌── lună (1-12) # │ │ │ │ ┌ zi din săptămână (0-7, 0=duminică) # │ │ │ │ │ # * * * * * comanda # Laravel scheduler — rulează la fiecare minut * * * * * cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1 # Backup la baza de date în fiecare zi la 3 dimineața 0 3 * * * mysqldump -u root -pPAROLA mydb > /backup/db_$(date +\%Y\%m\%d).sql # Curăță log-urile vechi în fiecare duminică 0 0 * * 0 find /var/log/app -name "*.log" -mtime +7 -delete # Restart php-fpm în fiecare noapte la 4 0 4 * * * systemctl restart php8.2-fpm
Câteva comenzi bonus pe care le folosesc des
# Disk usage — cât spațiu ocupă directoarele du -sh /var/log/* df -h # spațiul total al partițiilor # Netstat — ce porturi sunt deschise ss -tlnp # Variabile de mediu printenv | grep APP export APP_DEBUG=true # temporar, în sesiunea curentă # Istoricul comenzilor cu căutare history | grep "git push" # Ctrl+R în terminal pentru căutare interactivă # Redirectare output php artisan migrate 2>&1 | tee migration.log # 2>&1 redirecționează stderr la stdout, tee scrie și în fișier și pe ecran # Screen / tmux — sesiuni persistente pe server screen -S deployment # Dacă sesiunea SSH se întrerupe, procesul continuă screen -r deployment # reattach
Alias-uri pe care le am în `.bashrc`
# Adaugă în ~/.bashrc sau ~/.zshrc alias ll='ls -la' alias la='ls -la' alias ..='cd ..' alias ...='cd ../..' # Laravel shortcuts alias art='php artisan' alias tinker='php artisan tinker' alias mig='php artisan migrate' alias fresh='php artisan migrate:fresh --seed' # Logs alias laravel-log='tail -f storage/logs/laravel.log' alias nginx-log='sudo tail -f /var/log/nginx/error.log' # Git shortcuts alias gs='git status' alias gp='git push' alias gl='git log --oneline --graph --all'
După `source ~/.bashrc`, comenzile tale scurte sunt disponibile.
Linux nu e intimidant — e doar un set de unelte care, odată stăpânite, îți economisesc ore în fiecare săptămână. Comenzile de mai sus acoperă 90% din ce folosesc în munca de zi cu zi. Restul 10% le caut pe moment.
Dacă ai o comandă favorită care nu e pe listă, lasă-o în comentarii — tot timpul e loc de optimizat workflow-ul.
Comentarii
Inca nu au fost postate comentarii, fii primul care posteaza un comentariu!