{"id":4022,"date":"2024-11-11T15:54:06","date_gmt":"2024-11-11T14:54:06","guid":{"rendered":"https:\/\/vielhuber.de\/?p=4022"},"modified":"2024-11-11T16:04:20","modified_gmt":"2024-11-11T15:04:20","slug":"debugging-in-php-mit-xdebug","status":"publish","type":"post","link":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/","title":{"rendered":"Debugging in PHP mit Xdebug"},"content":{"rendered":"\n<p><a href=\"https:\/\/xdebug.org\" target=\"_blank\" rel=\"noreferrer noopener\">Xdebug<\/a> ist ein leistungsf\u00e4higes Debugging- und Profiling-Tool f\u00fcr PHP, das uns hilft, PHP-Anwendungen zu analysieren und zu optimieren. Es unterst\u00fctzt Funktionen wie Schritt-f\u00fcr-Schritt-Debugging, Leistungsmessung und Stack-Tracing, was die Fehlersuche erheblich erleichtert und bessere Einblicke in den Code erm\u00f6glicht. Es folgt eine kleine Einrichtungsleitfaden f\u00fcr die Benutzung innerhalb von VSCode.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Xdebug installieren<\/h3>\n\n\n\n<p>Wir installieren Xdebug beispielhaft auf einem aktuellen Ubuntu-System:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>sudo apt-get install -y php8.4-xdebug<\/code><\/code><\/pre>\n\n\n\n<p>Schlie\u00dflich legen wir f\u00fcr die sp\u00e4tere Ablage von Profiling- und Tracing-Daten ein tempor\u00e4res Verzeichnis an:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/tmp\/xdebug<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Xdebug konfigurieren<\/h3>\n\n\n\n<p>Nach der Installation konfigurieren wir Xdebug. Dazu editieren wir die <strong>php.ini<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vi \/etc\/php\/8.4\/fpm\/conf.d\/custom.ini<br><\/code><\/pre>\n\n\n\n<p>Es folgt eine sinnvolle Grundkonfiguration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>&#91;xdebug]\n; mode (see: https:\/\/xdebug.org\/docs\/all_settings#mode)\n;   reasonable default\nxdebug.mode=debug,profile\n;   disabled\n;xdebug.mode=off\n;   step debugging\n;xdebug.mode=debug\n;   performance profiling (be aware of load\/space)\n;xdebug.mode=profile\n;   trace profiling (record args)\n;xdebug.mode=trace\n\n; starting mode\n;   always (not recommended)\n;xdebug.start_with_request=yes\n;   only when specific get parameters \/ cookies are set\n;   (?XDEBUG_TRIGGER=1, ?XDEBUG_PROFILE=1, ?XDEBUG_TRACE=1, ?XDEBUG_SESSION=1)\n;   this is best in conjunction with Chrome extension \"Xdebug helper\"\nxdebug.start_with_request=trigger\n;   folder for analyzing profile dumps\nxdebug.output_dir=\"\/tmp\/xdebug\"\n;   not needed, since it is already in \/etc\/php\/8.4\/fpm\/conf.d\/20-xdebug.ini\n;zend_extension=xdebug.so<\/code><\/code><\/pre>\n\n\n\n<p>Nach diesen Anpassungen starten wir PHP-FPM neu, um die \u00c4nderungen zu \u00fcbernehmen:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sudo service php8.4-fpm restart<br><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">VSCode konfigurieren<\/h3>\n\n\n\n<p>Um Xdebug in Visual Studio Code zu nutzen, sind zwei Erweiterungen und eine Anpassung der Konfiguration erforderlich. Wir installieren dazu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=xdebug.php-debug\" target=\"_blank\" rel=\"noreferrer noopener\">PHP Debug<\/a>: f\u00fcr grundlegende Debugging-Funktionalit\u00e4t.<\/li>\n\n\n\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=DEVSENSE.profiler-php-vscode\" target=\"_blank\" rel=\"noreferrer noopener\">PHP Profiler<\/a>: F\u00fcr die Analyse der Cachegrind-Dateien.<\/li>\n<\/ul>\n\n\n\n<p>Schlie\u00dflich erstellen wir die Konfigurationsdatei <strong>launch.json<\/strong> im Ordner <strong>.vscode<\/strong> des zu analysierenden Projekts:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n&nbsp;&nbsp;&nbsp;&nbsp;\"version\": \"0.2.0\",\n&nbsp;&nbsp;&nbsp;&nbsp;\"configurations\": &#91;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"name\": \"Listen for Xdebug\",\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"type\": \"php\",\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"request\": \"launch\",\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"port\": 9003,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"ignore\": &#91;\"**\/vendor\/**\/*.php\"]\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;]\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Chrome Extension installieren<\/h3>\n\n\n\n<p>F\u00fcr ein flexibles Debugging im Browser hat sich die Extension <a href=\"https:\/\/chromewebstore.google.com\/detail\/xdebug-helper\/eadndfjplgieldjbigjakmdgkmoaaaoc\" target=\"_blank\" rel=\"noreferrer noopener\">Xdebug helper<\/a> bew\u00e4hrt. Diese erm\u00f6glicht es, Xdebug nur bei Bedarf zu aktivieren oder zu deaktivieren. Au\u00dferdem kann man bequem den Debug-Modus \u00e4ndern (um so beispielsweise von Debugging auf Profiling umzuschalten):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"122\" height=\"166\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/image-49.png\" alt=\"\" class=\"wp-image-4024\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">WordPress konfigurieren<\/h3>\n\n\n\n<p>Wenn man Xdebug in einer WordPress-Umgebung verwendet, kann es sinnvoll sein, das Debugging innerhalb von Cronjobs zu deaktivieren, wenn eine Debugging-Sitzung aktiv ist. Das erleichtert das Debugging von Anfragen. Dazu f\u00fcgt man folgende Zeile in die <code>wp-config.php<\/code> ein:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ disable wp cron on xdebug sessions\nif (function_exists('xdebug_is_debugger_active') &amp;&amp; xdebug_is_debugger_active()) {\n&nbsp;&nbsp;&nbsp;&nbsp;define('DISABLE_WP_CRON', true);\n}<\/code><\/pre>\n\n\n\n<p>Mit dieser Konfiguration haben wir ein leistungsstarkes Setup, das uns erm\u00f6glicht, komplexe Debugging-Probleme pr\u00e4zise zu meistern. Ob beim Finden hartn\u00e4ckiger Bugs oder beim Feintuning von Performance-Problemen \u2013 Xdebug macht die Arbeit nicht nur effizienter, sondern bringt durch die Kontrolle und Klarheit \u00fcber den Code eine neue Qualit\u00e4t in die Entwicklung.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Xdebug ist ein leistungsf\u00e4higes Debugging- und Profiling-Tool f\u00fcr PHP, das uns hilft, PHP-Anwendungen zu analysieren und zu optimieren. Es unterst\u00fctzt Funktionen wie Schritt-f\u00fcr-Schritt-Debugging, Leistungsmessung und Stack-Tracing, was die Fehlersuche erheblich erleichtert und bessere Einblicke in den Code erm\u00f6glicht. Es folgt eine kleine Einrichtungsleitfaden f\u00fcr die Benutzung innerhalb von VSCode.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"gtbabel_prevent_lngs":"","gtbabel_alt_lng":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-4022","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-blog"},"acf":[],"yoast_head":"<title>Debugging in PHP mit Xdebug &#060; Vielhuber David<\/title>\n<meta name=\"description\" content=\"Xdebug ist ein leistungsf\u00e4higes Debugging- und Profiling-Tool f\u00fcr PHP, das uns hilft, PHP-Anwendungen zu analysieren und zu optimieren. Es unterst\u00fc...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Debugging in PHP mit Xdebug &#060; Vielhuber David\" \/>\n<meta property=\"og:description\" content=\"Xdebug ist ein leistungsf\u00e4higes Debugging- und Profiling-Tool f\u00fcr PHP, das uns hilft, PHP-Anwendungen zu analysieren und zu optimieren. Es unterst\u00fctzt\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/\" \/>\n<meta property=\"og:site_name\" content=\"Vielhuber David\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-11T14:54:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-11T15:04:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vielhuber.de\/wp-content\/uploads\/image-49.png\" \/>\n\t<meta property=\"og:image:width\" content=\"122\" \/>\n\t<meta property=\"og:image:height\" content=\"166\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:site\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"David\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/\"},\"author\":{\"name\":\"David\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"headline\":\"Debugging in PHP mit Xdebug\",\"datePublished\":\"2024-11-11T14:54:06+00:00\",\"dateModified\":\"2024-11-11T15:04:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/\"},\"wordCount\":312,\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"image\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/image-49.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/\",\"name\":\"Debugging in PHP mit Xdebug &#060; Vielhuber David\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/image-49.png\",\"datePublished\":\"2024-11-11T14:54:06+00:00\",\"dateModified\":\"2024-11-11T15:04:20+00:00\",\"description\":\"Xdebug ist ein leistungsf\u00e4higes Debugging- und Profiling-Tool f\u00fcr PHP, das uns hilft, PHP-Anwendungen zu analysieren und zu optimieren. Es unterst\u00fctzt\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/image-49.png\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/image-49.png\",\"width\":122,\"height\":166},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/debugging-in-php-mit-xdebug\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vielhuber.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Debugging in PHP mit Xdebug\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/\",\"name\":\"Vielhuber David\",\"description\":\"Full-Stack Developer\",\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vielhuber.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\",\"name\":\"David\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"width\":700,\"height\":552,\"caption\":\"David\"},\"logo\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/vielhuber\"]}]}<\/script>","yoast_head_json":{"title":"Debugging in PHP mit Xdebug &#060; Vielhuber David","description":"Xdebug ist ein leistungsf\u00e4higes Debugging- und Profiling-Tool f\u00fcr PHP, das uns hilft, PHP-Anwendungen zu analysieren und zu optimieren. Es unterst\u00fc...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/","og_locale":"de_DE","og_type":"article","og_title":"Debugging in PHP mit Xdebug &#060; Vielhuber David","og_description":"Xdebug ist ein leistungsf\u00e4higes Debugging- und Profiling-Tool f\u00fcr PHP, das uns hilft, PHP-Anwendungen zu analysieren und zu optimieren. Es unterst\u00fctzt","og_url":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/","og_site_name":"Vielhuber David","article_published_time":"2024-11-11T14:54:06+00:00","article_modified_time":"2024-11-11T15:04:20+00:00","og_image":[{"width":122,"height":166,"url":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-49.png","type":"image\/png"}],"author":"David","twitter_card":"summary_large_image","twitter_creator":"@vielhuber","twitter_site":"@vielhuber","twitter_misc":{"Verfasst von":"David","Gesch\u00e4tzte Lesezeit":"2\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/#article","isPartOf":{"@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/"},"author":{"name":"David","@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"headline":"Debugging in PHP mit Xdebug","datePublished":"2024-11-11T14:54:06+00:00","dateModified":"2024-11-11T15:04:20+00:00","mainEntityOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/"},"wordCount":312,"publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"image":{"@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/#primaryimage"},"thumbnailUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-49.png","articleSection":["Blog"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/","url":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/","name":"Debugging in PHP mit Xdebug &#060; Vielhuber David","isPartOf":{"@id":"https:\/\/vielhuber.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/#primaryimage"},"image":{"@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/#primaryimage"},"thumbnailUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-49.png","datePublished":"2024-11-11T14:54:06+00:00","dateModified":"2024-11-11T15:04:20+00:00","description":"Xdebug ist ein leistungsf\u00e4higes Debugging- und Profiling-Tool f\u00fcr PHP, das uns hilft, PHP-Anwendungen zu analysieren und zu optimieren. Es unterst\u00fctzt","breadcrumb":{"@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/#primaryimage","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-49.png","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-49.png","width":122,"height":166},{"@type":"BreadcrumbList","@id":"https:\/\/vielhuber.de\/blog\/debugging-in-php-mit-xdebug\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vielhuber.de\/"},{"@type":"ListItem","position":2,"name":"Debugging in PHP mit Xdebug"}]},{"@type":"WebSite","@id":"https:\/\/vielhuber.de\/#website","url":"https:\/\/vielhuber.de\/","name":"Vielhuber David","description":"Full-Stack Developer","publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vielhuber.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef","name":"David","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","width":700,"height":552,"caption":"David"},"logo":{"@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg"},"sameAs":["https:\/\/x.com\/vielhuber"]}]}},"_links":{"self":[{"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/posts\/4022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/comments?post=4022"}],"version-history":[{"count":15,"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/posts\/4022\/revisions"}],"predecessor-version":[{"id":4046,"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/posts\/4022\/revisions\/4046"}],"wp:attachment":[{"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/media?parent=4022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/categories?post=4022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vielhuber.de\/ar\/wp-json\/wp\/v2\/tags?post=4022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}