Kategorie: PHP
-
PHP cURL verifizieren eines selbst-signierten FTPS Zertifikat
Leider kann man mit der PHP FTP Erweiterung keine SSL Zertifikate von FTPS Servern zu verifizieren, um Man-in-the-Middle Angriffe zu verhindern. Es ist aber möglich über php-cURL das selbst signierte Zertifikat zu verifizieren: public function checkFTPSCertificate(): bool { $ftp_certificate = ‚path/to/cert.crt‘ $ftp_server = ‚ftp://foo.de/‘; $ftp_user = ‚user‘; $ftp_password = ‚password‘; $ch = curl_init(); // curl_setopt($ch,…
-
PHP: ftp_fget(): Entering Passive Mode (10,1,0,139,213,156).
Die Fehlermeldung: ftp_fget(): Entering Passive Mode (10,1,0,139,213,156) bedeutet, dass der FTP Client eine neue passive Verbindung auf der IP 10.1.0.139 auf Port 213 * 256 + 156 = Port 54684 aufmachen soll. Am einfachsten händelt man diese Situation, wenn man sich neu verbindet mit ftp_connect() und es nochmal versucht und eine passive Verbindung aufbaut mit…
-
Gaufrette mit File Streams arbeiten
Um mit Gaufrette (Symfony Extension) auch Stream Operationen an Dateien durchführen zu können, kann man den etwas dürr dokumentierten Stream Wrapper verwenden. Dazu konfiguriert man in der gaufrette.yaml: knp_gaufrette: stream_wrapper: ~ filesystems: backup1: adapter: backup Und kann dann z.B. folgender Maßen eine csv. Datei schreiben: $stream = fopen(‚gaufrette://backup1/datei.csv‘, ‚w+‘); fputcsv($stream, [1,2,3]);
-
Symfony Service ID dynamisch konfigurieren mittels Parameter
Wenn man gern in seiner Depnedency Injection Kofiguration (services.yml) die Service Injektionen dynamisch konfigurierbar machen will über die parameters.yml, parameters: my_class: ‚App\MyClass‘ kann man dies mittels der Symfony Expression Language Komponente tun: composer require symfony/expression-language Dann kann man in der services.yml definieren: services: App\Command\MyCommand: arguments: – ‚@=service(parameter(„my_class“))‘
-
Windows Composer Update Fatal error: Allowed memory size of 1610612736 bytes exhausted
Folgende Fehlermeldung hat mein Composer trotz unbegrenztem Speicher: composer update Loading composer repositories with package information Updating dependencies (including require-dev) VirtualAlloc() failed: [0x00000008] Zur Verarbeitung dieses Befehls sind nicht gen VirtualAlloc() failed: [0x00000008] Zur Verarbeitung dieses Befehls sind nicht gen Fatal error: Out of memory (allocated 1260388352) (tried to allocate 201326600 bytes) in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/RuleSet.php on…
-
Yii2 versus Symfony 4 – ein Framework Vergleich
Ich habe lange mit Yii und dem Symfony Framework gearbeitet und will versuchen im Folgenden die Unterschiede von beiden Frameworks aus Programmierer Sicht zu erläutern. Konfiguration von Umgebungen Beim Erstellen von Web-Anwendungen hat man typischer Weise mindestens 2 Umgebungen: Die Entwicklungsumgebung, auf der man Fehler sehen will und die Live Umgebung, wo dies nicht passieren…
-
PHP encode String zu Extended ASCII 8bit 255 Zeichen
Um auch Umlaute in ein Bit darzustellen, kann man den erweiterten ASCII Zeichensatz verwenden mit 255 Zeichen, der auch Umlaute enthält wie ä, ö, ü und ß. Um dieses zu nutzen, kann man die folgende Funktion nutzen: /** * @param string $string * @return string */ protected function asciiEncodeString(string $string): string { $sourceEncoding = mb_detect_encoding($string);…
-
UDP mit PHP Nachrichten senden und empfangen Beispiel
Mit PHP kann man über UDP auf dem eigenen Rechner sehr einfach Packete verschicken. Um dies zu testen, braucht man einen Sender und einen Empfänger. In dem Biepsiel kommunizieren beider über die lokale IP auf Port 20010. Die Beispiele müssen auf der Konsole ausgeführt werden. Sender: <?php $address = ‚127.0.0.1‘; $port = 20010; $beat_period =…
-
mehrer UDP Frames mit PHP parallel auslesen mit socket_select()
Man kann in PHP sehr schwer parallel Operationen ausführen, aber für das lesen von mehreren Sockets gibt es die socket_select() Funktion. Damit lassen sich mehrere Socket Verbindungen parallel auslesen. In dem Beispiel werden 2 UDP Socket Verbindungen erstellt und gleichzeitig ausgelesen: function createSocket(string $ip, int $port) { $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); //set non blocking…
-
PHP XMLReader für sehr große Dateien Beispiel
Um mit PHP große XML Dateien auswerten zu können, muss man einen SAX Parser verwenden, der die XML Dateien von oben nach unten durchliest und nicht in ein Objekt umwandelt. Dafür ist der XMLReader von PHP vorgesehen. Ein Beispiel: $data = new Data(); $reader = new \XMLReader(); $reader->open($file); while ($reader->read()) { if ($reader->nodeType == \XMLReader::ELEMENT)…