Jump to content
php.lv forumi

Php konfigurācijas maiņa ar ini_set un failu augšupielāde.


Maris-S

Recommended Posts

Pacēlās jautājums ko darīt ja ir konfigurācijas vērtības ko nevar pamainīt ar ini_set un nav pieejas pie web servera konfigurācijas? Šajā gadījumā konkrēti runa iet par upload_max_filesize un post_max_size, skatījos ar php_info palīdzību, šīs divas vērtības nemainās, ja pirms tam tiek mainītas no php skripta, arī protams augšupielādējot failus nekas nenotiek.

 

Vēl viena lieta ir tāda ka ja fails ir pārsniedzis pieļaujamo faila lielumu, tad POST un FILE surperglobālie masīvi ir tukši, līdz ar to jautājums ir, vai nevar kaut kādā veidā ar php noteikt vai fails ir pārsniedzis izmērus un izdot kļūdas paziņojumu? Jo sanāk tā ka ja nav FILE masīva nav jau ko pārbaudīt.

Link to comment
Share on other sites

Pacēlās jautājums

runa iet

kādā veidā ar php noteikt vai fails ir pārsniedzis izmērus un izdot kļūdas paziņojumu? Jo sanāk tā ka ja nav FILE masīva nav jau ko pārbaudīt.

Runa Nevar pacelieties , Un Tapat vinja nevar nekur iet :(

--

Atbildot uz tavu jautajumu --> var noteikt un piedevam pavisam vienkarshi ...

$_FILE['mans_nosaukums']['error'] --> 9 variacijas ..

Edited by Grey_Wolf
Link to comment
Share on other sites

Par to jautājuma pacelšanos un runas iešanu tas tā pārnestā nozīmē. :)

 

Nu gluži viss tik vienkārši nav, jo ja faila izmērs pārsniedz pieļaujamo augšupielādējamā izmēru un tajā pašā laikā post datu izmērs nepārsniedz post datiem pieļauto izmēru, tad viss ir kārtībā, bet lieta tāda, ja pateicoties lielam augšupielādējamam failam kopējie post dati pārsniedz post datu pieļaujamo apjomu, tad gan POST, gan FILES masīvi ir tukši. Šajā gadījumā ne tikai nav kur paskatīties kļūdu, bet arī nestrādās viss kas saistīts ar citiem post datiem, piemēram:

 

if (isset($_POST['submit_add'])) {
 Check for errors...

 process file upload...
}

 

Nenostrādās jo nav jau post masīvā datu kā tādu.

Link to comment
Share on other sites

kaads sakars $_POST ar $_FILE masiivu ... ?

Es nesmu minejis ne vardu ka buutu kautkas jaaskatas $_POST masiivaa + vinsh nebuus tuukshh ...

Paris dienas atpakalj intensiivi testeeju sho variaciju ...

buus tuuksh tikai dotais $_FILE['dotais_faila_input_lauks'][], iznjemot $_FILE['dotais_faila_input_lauks'][error] kursh saturees kljudas Nr.

---

Testeju peivienojot 10 failus augosaa seciibaa (tb. 1M 2M -10Mb) .. ar uzliktu kopeejo limitu 2,5Mb ... perfekti ieladeejas fisi dati iznjemot faili kas parsniedz 2Mb (dotajaa gadijumaa 3 Mb) ..

 

edit: un testesanai nevajag izmantot isset() utt, bet gan primitiivu masivu izvadiisanu uz scriina, pats personiigi izmantoju sadu variantu:

ielaiekam faila kas ielaadejas vienmer --> teiksim config...

function b($s,$x='')
{
echo '<pre>'.$x.' |<br>';
print_r($s);
echo '</pre><br>|';
reurn false;
}
// ko erti izsaukt no jebkura koda vietas teiksim
b($_GET,' GET masiivs');
b($_FILE, 'faili....')
b($masivs)
b('TEXTC');
b($var,'PArastc mainigais ar nosaukumu VAR');

Edited by Grey_Wolf
Link to comment
Share on other sites

Es arī izmēģinājos ar failu augšupielādi un man gan viņi bija tukši, tā kā tiem arī būtu jābūt pēc dokumentācijas, viss tieši saistās ar post_max_size, te arī ir aprakstīts kādā gadījumā POST un FILES masīvi būs tukši, šeit arī ir sakars šiem diviem masīviem, tātad ja kopējais sūtīto datu izmērs pārsniedz POST datu pieļauto izmēru tad šie abi masīvi ir tukši. Man nekas nenāk prātā kā varētu noteikt kļūdu par pārāk lielo failu šādā gadījumā.

Link to comment
Share on other sites

Uzmanīgāk lasītu, tad izlasītu arī, ka to nevar nomainīt skriptā. Jo šīs vērtības ietekmē faila uploadu, kurš notiek pirms skripts vēl sācis darboties. Respektīvi - tad, kad skripts sācis darboties, vari mainīt vai nemainīt tās vērtības - nekas nemainīsies, jo viss faila saturs jau ir uploadots!

 

Jāmaina ir php.ini failā, vai arī, ja ir atļauts, .htaccess failā.

 

Tieši tas pats, kas ar "magic quotes" - tā settinga mainīšana neko neietekmēs, jo viss jau būs eskeipojies pirms skripts vēl sācis darboties.

Link to comment
Share on other sites

  • 1 month later...

Deniss, paldies par linku, vēl neesmu izmēģinājis strādā vai nē, bet savā laikā meklēju tādu skriptu, vienīgais nesanāca atrast tādu, kas strādātu tikai uz php, pārsvarā kā papildus līdzeklis bija perl (ja pareizi atceros), ja strādājošs piemērs, tad šis noderēs.

Link to comment
Share on other sites

×
×
  • Create New...