# Static आणि dynamic sites: PHP कुठे चालतं?

Source: https://ravindrabagale.com/mr/cyber/part-04/ch09-php-lamp-and-lemp-step-by-step/9-1-static-vs-dynamic-and-how-php-runs.html
Language: mr (Marathi with English technical terms)

Static request मध्ये web server तयार file वाचून पाठवतो. Dynamic request मध्ये server code चालवतो, गरजेनुसार database विचारतो आणि response तयार करतो. प्रत्येक dynamic request ला database query लागेलच असं नाही; cache किंवा इतर logic असू शकतो.

 Static:   Browser --GET /about.html--> Nginx --reads file--> same HTML for everyone

 Dynamic:  Browser --GET /feed.php--> Nginx --FastCGI--> PHP-FPM --SQL--> MySQL
                                                           |
                               HTML built for THIS user <--+

 | PHP चालवण्याची पद्धत
 | कशासोबत?
 | कसं काम करतं?

 | mod_php
 | Apache (Ubuntu मधलं हे example)
 | PHP module Apache process मध्ये load होतो

 | PHP-FPM
 | या course मध्ये Nginx आणि Amazon Linux Apache
 | स्वतंत्र PHP workers; FastCGI द्वारे Unix socket किंवा configured endpoint वर संवाद

mod_php: Apache च्या process मध्ये PHP module चालतो. PHP-FPM: वेगळी PHP worker pool; web server FastCGI ने Unix socket किंवा configured network endpoint वर बोलतो. Nginx स्वतः PHP execute करत नाही; या course मध्ये PHP-FPM handler वापरतो. Apache दोन्ही पद्धती वापरू शकतो.

Security मध्ये उपयोग

Database queries, user input, uploads आणि command execution यामुळे dynamic apps मध्ये SQL injection, XSS व इतर bugs ची शक्यता येते. Static hosting मध्ये server-side application logic कमी असतं; तरी hosting, dependencies आणि client-side code सुरक्षित ठेवणं आवश्यक असतं. म्हणून vulnerable lab समजण्याआधी आपला working stack बनवू.

Practice

Static page आणि PHP page चा request flow काढा. प्रत्येक arrow वर HTTP port, FastCGI socket किंवा database connection दाखवा.

रवींद्र बागले यांची tip

PHP browser मध्ये चालत नाही; server वर चालून HTML किंवा दुसरा response format पाठवतो. View Source मध्ये PHP code दिसू नये. Raw PHP/download दिसल्यास file-serving/handler configuration तातडीने तपासा.
