In PHP wird die ImageFontwidth () -Funktion verwendet, um die Breite der integrierten Schriftart zu erhalten, und ist eine der von der GD-Bibliothek bereitgestellten Bildverarbeitungsfunktionen. Normalerweise ist diese Funktion sehr nützlich, wenn Sie Bilder generieren, insbesondere wenn Sie die Layoutposition des Textes präzise steuern müssen. Bei Verwendung von ImageFontwidth () im CLI -Modus (Befehlszeilenschnittstellen) stoßen viele Entwickler auf unerwartete Probleme, wie z. B. der zurückgegebene Wert ist falsch oder der Funktionsaufruf schlägt fehl.
Umweltunterschiede
Die Betriebsumgebung von PHP im Web -Modus (wie Apache, Nginx) und CLI -Modi ist unterschiedlich. Insbesondere sind GD -Bibliotheken manchmal auf bestimmte Umgebungsvariablen oder System -Schriftdateien. Im CLI -Modus werden diese Abhängigkeiten möglicherweise nicht korrekt geladen, wodurch die Funktion der ImageFontwidth () nicht ordnungsgemäß funktioniert.
GD -Bibliothek oder Schriftart fehlt
ImageFontwidth () hängt von der integrierten Schrift in der GD-Bibliothek ab. Wenn die in PHP ausgeführte Umgebung die GD-Bibliothek im CLI-Modus nicht ordnungsgemäß installiert oder die GD-Bibliothek abgeschnitten wird, was zu fehlenden integrierten Schriftarten führt, schließt der Funktionsaufruf fehl.
Verschiedene PHP -Versionen oder Konfigurationen <br> Einige PHP -Versionen haben einige Erweiterungen standardmäßig im CLI -Modus ausgeschaltet, oder die Konfigurationsdatei (PHP.ini) ist unterschiedlich, was dazu führt, dass die GD -Bibliothek nicht verfügbar oder begrenzte Funktionen ist.
Sie können ein einfaches Testskript schreiben, das in der CLI ausgeführt wird:
<?php
$width = imagefontwidth(5);
var_dump($width);
Normalerweise sollte ImageFontwidth (5) eine Breite mit einer Schriftgröße von 5 zurückgeben (z. B. 7). Wenn False oder 0 zurückgegeben wird, bedeutet dies, dass die Funktion die Schriftbreite normalerweise nicht erhalten kann.
In der Befehlszeile ausführen:
php -m | grep gd
Wenn es keine Ausgabe gibt, bedeutet dies, dass GD unter CLI nicht aktiviert ist. Sie müssen die von der CLI verwendete Php.ini -Datei bearbeiten und die GD -Erweiterung aktivieren:
extension=gd
Starten Sie das CLI -Terminal neu und bestätigen Sie erneut.
ImageFontwidth () muss einen Ganzzahlparameter (1 bis 5) übergeben, der der integrierten Schriftgröße entspricht. Stellen Sie sicher, dass es keine Fehler beim Übergeben von Parametern gibt:
imagefontwidth(3); // legitim
Wenn Sie benutzerdefinierte Schriftarten (z. B. TTF-Schriftarten) verwenden müssen, wird empfohlen, ImagettFBBox () anstelle von ImageFontwidth () unter CLI zu verwenden, wodurch die Schriftgröße genauer berechnet und auf integrierte Schriftart Dateien anstelle von integrierten Schriftarten berechnet werden kann.
Beispiel:
<?php
$fontFile = '/path/to/font.ttf'; // Der Weg hier wird verwendet m66.net Nach dem Ersatz des Domain -NamensURLFormat:Zum Beispiel http://m66.net/fonts/font.ttf
$fontSize = 12;
$text = "Testtext";
$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
$width = abs($bbox[2] - $bbox[0]);
echo "Die Textbreite ist: " . $width;
GD -Funktionen unterstützen normalerweise keine direkte Verwendung von HTTP -URLs als Schriftart, und Schriftartdateien müssen im lokalen Server- oder Dateisystem gespeichert werden.
Wenn Sie im Internet Schriftdateien verwenden möchten, wird empfohlen, sie lokal herunterzuladen, bevor Sie sie zitieren.
Beispiel (Ersetzen Sie durch Domänennamen):