V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 12.0 (Mastodon). Forgejo je fork Gitei.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).
Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.
Patrick Volkerding oznámil před dvaatřiceti lety vydání Slackware Linuxu 1.00. Slackware Linux byl tenkrát k dispozici na 3,5 palcových disketách. Základní systém byl na 13 disketách. Kdo chtěl grafiku, potřeboval dalších 11 disket. Slackware Linux 1.00 byl postaven na Linuxu .99pl11 Alpha, libc 4.4.1, g++ 2.4.5 a XFree86 1.3.
Ministerstvo pro místní rozvoj (MMR) jako první orgán státní správy v Česku spustilo takzvaný „bug bounty“ program pro odhalování bezpečnostních rizik a zranitelných míst ve svých informačních systémech. Za nalezení kritické zranitelnosti nabízí veřejnosti odměnu 1000 eur, v případě vysoké závažnosti je to 500 eur. Program se inspiruje přístupy běžnými v komerčním sektoru nebo ve veřejné sféře v zahraničí.
Vláda dne 16. července 2025 schválila návrh nového jednotného vizuálního stylu státní správy. Vytvořilo jej na základě veřejné soutěže studio Najbrt. Náklady na přípravu návrhu a metodiky činily tři miliony korun. Modernizovaný dvouocasý lev vychází z malého státního znaku. Vizuální styl doprovází originální písmo Czechia Sans.
Vyhledávač DuckDuckGo je podle webu DownDetector od 2:15 SELČ nedostupný. Opět fungovat začal na několik minut zhruba v 15:15. Další služby nesouvisející přímo s vyhledáváním, jako mapy a AI asistent jsou dostupné. Pro některé dotazy během výpadku stále funguje zobrazování například textu z Wikipedie.
Více než 600 aplikací postavených na PHP frameworku Laravel je zranitelných vůči vzdálenému spuštění libovolného kódu. Útočníci mohou zneužít veřejně uniklé konfigurační klíče APP_KEY (např. z GitHubu). Z více než 260 000 APP_KEY získaných z GitHubu bylo ověřeno, že přes 600 aplikací je zranitelných. Zhruba 63 % úniků pochází z .env souborů, které často obsahují i další citlivé údaje (např. přístupové údaje k databázím nebo cloudovým službám).
Open source modální textový editor Helix, inspirovaný editory Vim, Neovim či Kakoune, byl vydán ve verzi 25.07. Přehled novinek se záznamy terminálových sezení v asciinema v oznámení na webu. Detailně v CHANGELOGu na GitHubu.
Americký výrobce čipů Nvidia získal od vlády prezidenta Donalda Trumpa souhlas s prodejem svých pokročilých počítačových čipů používaných k vývoji umělé inteligence (AI) H20 do Číny. Prodej těchto čipů speciálně upravených pro čínský trh by tak mohl být brzy obnoven, uvedla firma na svém blogu. Americká vláda zakázala prodej v dubnu, v době eskalace obchodního sporu mezi oběma zeměmi. Tehdy to zdůvodnila obavami, že by čipy mohla využívat čínská armáda.
100 Continue
, nemělo by ale dojít k tomu, že se přenese část a pak se přenos přeruší – velikost souboru přenáší klient už v úvodních hlavičkách, a hned na to by měl server odpovědět, že je soubor příliš velký.
POST
. Vezme si z RAM čtyřnásobek velikosti souboru a to mi ten server shazuje.
File API vypadá zajímavě, jenom mám zatím problém to pochopit.
JumpLoader vypadá hezky, ale zase takový komfort nepotřebuji. Kromě toho používá JRE, které každý klient nahráno nemá.
Uvažuji o metodě HTTP PUT
. Jen nevím, jak je to s podporou u běžných prohlížečů. Klidně i přes AJAX, resp. jQuery. Má s tím někdo zkušenosti? Potřebuji, aby to fungovalo z běžně nastaveného prohlížeče a nezatěžovalo server. Rád bych se vyhnul Javě a Flashi.
Uvědomuji si, že toho chci mnoho, ale vlastně jen hledám náhradu za FTP běžící na HTTP s možností sledovat průběh uploadu.
<input type=file>
nebo právě File API (a nebo proprietární funkce prohlížečů, pak by ale stejně uživatel musel dané stránce dát speciální práva).
application/x-www-form-urlencoded
budu muset použít multipart/form-data
a přimět Apache, aby místo držení v paměti ukládal data ihned na disk.
multipart/form-data
, upload se provede bez chyby, ale stále to žere RAM na serveru (má to ukládat do diskové cache) a nefunguje apc.rfc1867, i když je nastavené (data pro progress bar). Viz níže.
<input type=file>
. Používám stále POST podle nejrůznějších návodů, enctype="multipart/form-data"
také, ale diskovou cache to stále nepoužívá. Soubor se sice nahraje, ale se soubory nad 1 GB to stále kolabuje.
apc_fetch('upload_'.$_GET['progress_key'])
nevrací žádnou hodnotu, i když by mělo. Zde je apc.ini
:
extension=apc.so apc.rfc1867=on apc.max_file_size=2000M apc.shm_size=32 apc.stat=1 apc.ttl=86400 apc.user_ttl=86400 apc.lazy_functions=1 apc.lazy_classes=1 apc.mmap_file_mask=/home/tmp/apc.XXXXXX apc.rfc1867_freq=200k apc.gc_ttl = 259200Možná je tam něco zbytečně, něco chybí, nebo je něco špatně.
upload_max_filesize
a post_max_size
je nastavena na větší hodnoty než 1GiB? (bacha na velké číslo, na 32bit PHP-ku to musí být méně než 2^31).
upload_max_filesize = 2000M post_max_size = 2000M
<?php echo 'post_max_size: '.ini_get('post_max_size').'<br />'; echo 'upload_max_filesize: '.ini_get('upload_max_filesize').'<br />'; if(isset($_POST['hbtn'])) { echo "Form has been sent<br />"; if(isset($_FILES['hfile'])) { echo 'Info name: '.$_FILES['hfile']['name'].'<br />'; echo 'Info size: '.$_FILES['hfile']['size'].'<br />'; echo 'Info type: '.$_FILES['hfile']['type'].'<br />'; echo 'Info tmp_name: '.$_FILES['hfile']['tmp_name'].'<br />'; if(!is_uploaded_file($_FILES['hfile']['tmp_name'])) { echo 'ATTACK! or empty post :)<br />'; exit(1); } else echo 'No attack<br />'; echo 'File size: ' . filesize($_FILES['hfile']['tmp_name']) . '<br />'; } else echo "ERROR, the file doesn't exist in \$_FILES array<br />"; } else { if(isset($_GET['get_send'])) echo "ERROR: Form has been sent, but a file hasn't recieved."; } echo '<br /><br />'; ?> <form action="testbigupload.php?get_send=yes" method="post" enctype="multipart/form-data"> Send file:<br> <input name="hfile" type="file"><br /> <input name="hbtn" type="submit" value="Send files"> </form>A chování odešlu-odchází-nedojde se mi podařilo nasimulovat jen pokud
upload_max_filesize
či post_max_size
měli nižší hodnotu než velikost uplodovaného filesu a během přenosu soubor v /tmp
(,který je nastaven jako
upload_tmp_dir
) soubor ani „nevznikal“./tmp
soubor okamžitě „rostl“.php.ini
, restartoval jste apache po změně hodnot?
/etc/php5/apache2/conf.d/apc.ini
, v phpinfo vidím změny.
To by znamenalo, že ty konstanty musím _snížit_. Díky, zkusím.
phpinfo()
tak je to pochopitelně správně.max_execution_time
zkuste si jej na zkoušku dát na 0
.apc.rfc1867_freq = 5K
(či na zkoušku 2M
).
/tmp
? To bych potřeboval. Mně to všechno tlačí do RAM a případně do swapu. Pak to začne brzdit celý server.
max_execution_time
mě zlobilo, když jsem měl default 30 s
a rychlost disku byla 20 MB/s. Soubory větší než 600 MB se nestihly uložit. Teď mám 300 s
. Proto jsem si také udělal /home/tmp
, aby přesun byl okamžitý, data zůstanou na stejném oddílu.
apc.rfc1867_freq = 10k
Někde jsem se dočetl, že popisované chování může mít na svědomí firewall. Možná měl dotyčný na mysli reverzní proxy.
Mně to všechno tlačí do RAM a případně do swapu. Pak to začne brzdit celý server.Tohle chování mi pořád připadá divné. Můžete ukázat váš kód, který tohle chování způsobuje?
/tmp
? PHP je spouštěno přes FastCGI.
Nejzvláštnějsí na celé té situaci je fakt, že po Apache nechci nic víc, než co FTP umí už desítky let.
qqUploadedFileXhr->save()
, kde je použita fce stream_copy_to_stream()
, a tady o ní píšou nelichotivě, co se paměti týče./tmp
ukládá do RAM. Podobně jsem dopadl i s Adploits, tam se řešil status 500.
Je možné, že v něm je Apache defaultně zkompilován tak, aby uploadované soubory ukládal do RAM místo do /tmp?O uploadované soubory by se neměl starat Apache, ale až PHP. Apache jenom ten proud dat ze sítě přesměruje na standardní vstup PHP. Alespoň doufám, že to takhle funguje i pro FastCGI.
Nejzvláštnějsí na celé té situaci je fakt, že po Apache nechci nic víc, než co FTP umí už desítky let.V tom je ale zároveň skryta odpověď, proč je s tím problém – Apache je HTTP server, a protokol HTTP byl zamýšlen pro přenos malých souborů ze serveru na klienta a k přenosu ještě menších požadavků z klienta na server. Vy teď najednou po něm chcete přenášet obrovský soubor, k čemuž původně nebyl určen, a ještě z klienta na server, k čemuž už vůbec nebyl určen. Naopak FTP je protokol navržený pro přenos (i velkých) souborů. Já chápu, proč to chcete mít přes HTTP – ale ten povzdech je zhruba stejný, jako byste se podivoval, že se kladivem šrouby utahují blbě, když to se šroubovákem jde dobře už desítky let. To, že se teď kladiva používají na všechno a se šroubovák umí zacházet jen experti je smutná pravda, ale není to chyba těch nástrojů.
upload_tmp_dir
pod jménem tmp_name
odkud si jej nejlépe pomocí fce move_uploaded_file()
přesunete kam potřebuje, bo po ukončení skriptu se smaže (tmp a cíl je nejlepší mít na jednom filesystému).upload_max_filesize = 2000M
, post_max_size = 2000M
a případně vhodně zvolit upload_tmp_dir
(případně file_uploads
a „nově“ i max_file_uploads
).apc.enabled=0
a taky bych ukázal ten formulář a spracovávací skript /tmp
. Teď už vím, že ne. Něco je špatně v Apache.
V přiloženém souboru jsou spojeny upload.php
a upload_frame.php
, protože abclinuxu.cz umožňuje jen jednu přílohu.
$folder = "tmp/"; //specify folder for file upload
move_uploaded_file()
není testována a v $folder
chybí lomítko na začátku, takže se soubor neuloží (nepřesune), tak je to OK a u mě to seje správně, bez APC a PHP jako modul. FcgidMaxRequestLen
.FcgidMaxRequestLen
jsem nenašel, pouze MaxRequestLen 15728640
.
MaxRequestInMem
a default by měla mít 65536 a stalo se to někdy kolem verze 2.2, ale v Lennym je 2.4 - nepletu-li se -, tak nevím…MaxRequestInMem
jukl a pak, vím že je to otrava, ale zkusil bych to přes mod_php MaxRequestInMem
i MaxRequestLen
, ale žádná změna. Mezitím jsem našel v tempu část souboru, který jsem uploadoval před půlhodinou. To by mohlo znamenat, že se něco přece jen změnilo. Jen se mi to nedaří zopakovat.
MaxRequestInMem
na nějakou malou hodnotu (65KiB) a MaxRequestLen
na hodnotu větší než uploadovaný soubor.
MaxRequestLen
menší a pak větší než soubor. Teď mě napadá, že ještě jednou vyzkouším menší hodnotu, protože se mi v tempu objevil malý fragment nahrávaného souboru a nepodařilo se mi to zopakovat.
MaxRequestInMem
, mělo by stačit tuto hodnotu nastavit na třeba 65KiB a je to, ale pokud ji to nežere tak asi smůla.
Tiskni
Sdílej: