nginx - php vs Php

 ( Qury | 2019. március 20., szerda - 20:27 )

Sziasztok,

Talalkoztam egy érdekes problémával:

Azure-ben ubuntu + nginx + php-fpm alatt fut egy web app. Ha direktben futtatod a scriptet (..../index.php) akkor működik ahogy kell, azonban ha átírom a .php kiterjesztést .PHP-re vagy .Php-re akkor fogja és letölti az index.php file-t.

Ez elég gáz!

Találkoztatok már ilyennnel? Illetve mit es hogyan kellene beállítani, hogy a fenti ne történjen meg?

Helyreigazitas:

A fenti peldaban az URL-re gondoltam.
Tehat:

file neve: index.php
URL: https://valami.domain/index.php -> ez megy rendesen
URL: https://valami.domain/index.PHP -> ebben az esetben letoltodik az index.php file ahelyett hogy vegrehajtodna

A filerendszeren nincs "index.PHP" file!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

pontosan hogy dobod át a php-fpm -nek a dolgokat? mert ha "~* \.php$"-vel, akkor az nem case sensitive. ha a csillagot elhagyod, akkor lesz case sensitive.

holnap reggel bemasolom a config ide vonatkozo reszet... egyebkent koszonom!
---------------------------------------------
Support Slackware: https://paypal.me/volkerdi

Nyilván látni kellene a configot, de gondolom van egy ilyen sorod valahol:

location ~ \.php(/|$) {

A problémát itt a ~ okozza, ami kis és nagybetű különbséget figyelembe veszi.

Lásd a dokumentációt:
http://nginx.org/en/docs/http/ngx_http_core_module.html#location

TLDR: ~ helyett ~*, ami case insensitive.

Btw, az jó kérdés, hogy ez gáz-e. Az URL nem case insensitive, miért lenne az URL matching alapból az? A fájlnév sem számít annak.

Koszonom!

Ami pedig a case insensitivity-t illeti, ha index.php-t atdobja PHP-FPM-nek akkor dobja at az index.PHP-t is.
Annyit szeretnek elrni, hogy a vegfelhasznalo ne tudja a php file-t letolteni.

---------------------------------------------
Support Slackware: https://paypal.me/volkerdi

"azonban ha átírom a .php kiterjesztést .PHP-re vagy .Php-re"
> Ha kitörlöd a file-t akkor pedig hibát dob. sőt ha ékezetes filenevet használsz azt a web-en még mindig sok helyen nem honorálják. a megoldás egyszerű: ne tedd.

en nem teszem, majd megteszi helyettem a random end-user
Mit gondolsz hogy derult feny erre a problemara? :)

---------------------------------------------
Support Slackware: https://paypal.me/volkerdi

"Ennyi ideje regisztrált felhasználó: 17 év 18 hét"
Inkább az a gáz, hogy ezen időszak alatt nem szoktad meg azt, hogy a *nix rendszer case sensitive-ek


// Happy debugging, suckers
#define true (rand() > 10)

dupla post

LOL!

A problema pont az hogy nagyon is megszoktam es epp ez a problema!

A nem letezo "index.PHP" hivasakor valami "file not found" jellegu dolgot varok, nem pedig azt hogy a letezo "index.php"-t letolti nekem a bongeszo

---------------------------------------------
Support Slackware: https://paypal.me/volkerdi

Akkor új értelmezést nyert a kérdésed, magyarul nem egyértelműen fogalmaztál.

"azonban ha átírom a .php kiterjesztést .PHP-re vagy .Php-re akkor fogja és letölti az index.php file-t."

Mit írsz át? Böngészőben a kért URL-t, vagy a fájl nevét a szerveren?

Nah, ez nem jött le az eredeti post-ból :)
Vagyis a szerveren index.php -ként éli életét, viszont ha böngészőben átírod az index.php -t index.PHP -ra, letölti?
Ez viszont egy nagyon fura viselkedés, kezdjük az elején:
- filerendszer?
Gyors check: könyvtárban $ cat index.php vs. $ cat index.PHP

- nginx config?


// Happy debugging, suckers
#define true (rand() > 10)

Történt egyszer, hogy az öcsém fejlesztett valamit Linuxon, és nekem is bele kellett molyolnom valamit, csakhogy nekem akkoriban épp csak Macem volt fejlesztőképes állapotban. Csodálkozva tapasztaltam, hogy a git clone után azonnal módosítottnak jelzett egy csomó file-t. A rejtély nyitja annyi volt, hogy az öcsémnél ilyen file-ok voltak például, hogy "a.jpg, b.jpg, A.jpg, B.jpg", és mivel a Mac alapesetben kis- és nagybetűk között nem tesz különbséget, rögtön már a clone folyamán vígan felülírta az A.jpg-vel az egy nanoszekundummal korábban letöltött a.jpg-t. Persze tudom, a Mac nem hardcore *nix, de ettől még tanulságos volt az eset.

ohh, a kis-nagy betűvel meg symlinkekkel ugyan így meg lehet szivatni a windows-os git-et ;)


// Happy debugging, suckers
#define true (rand() > 10)

Mondjuk kíváncsi lennék, milyen racionális indok van arra, hogy valami.jpg, Valami.jpg és a valami.JPG mást jelentsen.

Én meg arra lennék kíváncsi, hogy milyen racionális indok van arra, hogy egyes programok .Jpg meg .JPG végű fájlokat generáljanak... mert épeszű felhasználó tuti nem gépel be magától ilyen fájlneveket, ezeket fostos szoftverek generálják.