PHP-felsökning med IIS Express på Windows

I det här inlägget beskrivs hur du kan felsöka en PHP-hemsida med Visual Studio Code och IIS Express på Windows. Visual Studio Code är en källkodsredigerare med inbyggt stöd för JavaScript, TypeScript och Node.js, det har tillägg för andra språk (som C ++, C #, Java, Python, PHP, Go).

Du måste installera PHP för IIS och/eller PHP för IIS Express för att kunna köra PHP-applikationer på din Windows-dator. Du kan använda Web Platform Installer i IIS Manager för att installera olika versioner av PHP, du hittar dem under Products och Frameworks.

IIS och IIS Express kommer att använda den senast installerade versionen av PHP som standard. Du kan ändra ordningen för hanterare ”Hanteramappningar” i IIS-Hanteraren på servernivå eller programnivå. Klicka på ”Visa sorterad lista” i IIS-Hanteraren för att se ordningen för hanterare. Du kan också öppna filen ApplicationHost.config för att se ordningen för hanterare (C: \Windows\System32\inetsrv\Config).

<handlers accessPolicy="Read, Script">
	<add name="PHP72_via_FastCGI" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\v7.2\php-cgi.exe" resourceType="Either" />
	<add name="PHP54_via_FastCGI" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\v5.4\php-cgi.exe" resourceType="Either" />
	<add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
...
</handlers>

Det finns en applicationHost.config för IIS Server och en för IIS Express, konfigurationsfilen för IIS Express hittar du vanligtvis i C:\Users\%Användarnamn%\Documents\IISExpress\config.

Installera Visual Studio Code och tillägg

Du måste ladda ner Visual Studio Code, du kan välja en användarinstallatör, ett systeminstallatör eller en zip-fil. När du har installerat redigeraren måste du också installera följande tillägg:

  • IIS Express (warren-buckley.iis-express)
  • PHP Debug (felixfbecker.php-debug)
  • PHP Extension Pack (felixfbecker.php-pack)
  • PHP IntelliSense (felixfbecker.php-intellisense)

Skapa ett nytt projekt

För att skapa ett nytt projekt behöver du bara skapa en mapp på din dator (D:\PHP-hemsidor\php-test) och öppna den i Visual Studio Code. Skapa en ny fil med namnet ”phpinfo.php” och lägg till följande innehåll till den.

<html>
 <head>
  <title>PHP Information</title>
 </head>
 <body>
 <?php phpinfo(); ?> 
 </body>
</html>

Öppna en Command Pallete (Ctrl+Shift+P) från View i menyn eller använd kortkommandot och skriv ”IIS Express: Start Website”. Detta innebär att filen iisexpress.json läggs till i mappen .vscode i ditt projekt och att en localhost-adress för din webbplats läggs till i applicationHost.config. Öppna phpinfo.php-filen i webbläsaren och inspektera informationen om den använda php-versionen. Om detta inte fungerar eller om den använda php-versionen är fel, öppna filen ApplicationHost.config för IIS Express (C:\Users\%Användarnamn%\Documents\IISExpress\config). Se till att du hittar fastCgi i system.webServer och att du hittar rätt PHP-version som en applikation.

<fastCgi>
	<application fullPath="C:\Program Files (x86)\iis express\PHP\v5.4\php-cgi.exe" monitorChangesTo="php.ini" activityTimeout="600" requestTimeout="600" instanceMaxRequests="10000">
		<environmentVariables>
			<environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
			<environmentVariable name="PHPRC" value="C:\Program Files (x86)\iis express\PHP\v5.4" />
		</environmentVariables>
	</application>
	<application fullPath="C:\Program Files (x86)\iis express\PHP\v7.2\php-cgi.exe" monitorChangesTo="php.ini" activityTimeout="600" requestTimeout="600" instanceMaxRequests="10000">
		<environmentVariables>
			<environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
			<environmentVariable name="PHPRC" value="C:\Program Files (x86)\iis express\PHP\v7.2" />
		</environmentVariables>
	</application>
</fastCgi>

Leta därefter reda på hanterare inuti system.Webserver i filen ApplicationHost.config och se till att en hanterare finns för rätt PHP-version, ordningen är viktig (den första som hittas används).

<handlers accessPolicy="Read, Script">
	<add name="PHP72_via_FastCGI" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\iis express\PHP\v7.2\php-cgi.exe" resourceType="Either" />
	<add name="PHP54_via_FastCGI" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\iis express\PHP\v5.4\php-cgi.exe" resourceType="Either" />
</handlers>

Om du vill använda en specifik PHP-version för den här webbplatsen, skapa filen web.config i ditt projekt och lägg till det här (se till att namnet på hanteraren är unikt).

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
	<handlers accessPolicy="Read, Script"> 
      <add name="PHP_localhost_8085" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\iis express\PHP\v7.2\php-cgi.exe" resourceType="Either" />
	</handlers>
  </system.webServer>
</configuration>

Lägg till Xdebug till PHP-versionen

Gå till filen phpinfo.php på din webbplats och kopiera HTML-versionen eller HTML-källan av utdatan. Gå till Installationsguide för Xdebug och klistra in innehållet i textrutan för att få en detaljerad installationsanvisning. Ladda ner den föreslagna filen och följ anvisningarna.

Min PHP-version är 7.2, jag kopierade den nedladdade filen till ”C:\Program Files (x86)\iis express\PHP\v7.2\ext” och öppnade filen php.ini (C:\Program Files (x86)\IISExpress\PHP\v7.2\php.ini) och lade till följande innehåll enligt Xdebug och PHP-debug-tillägget.

[XDebug]
zend_extension = "C:\Program Files (x86)\iis express\PHP\v7.2\ext\php_xdebug-2.6.1-7.2-vc15-nts.dll"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1

Påbörja felsökning

Starta om IIS Express om det körs, skriv ”IIS Express: Restart Website” i Command Pallete. Gå till Debug och Open Configurations i menyn i Visual Studio Code och välj PHP, detta innebär att filen launch.json läggs till i mappen .vscode. Filen launch.json har följande innehåll:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

Lägg till en brytpunkt i filen phpinfo.php och gå till Debug och Start Debugging i menyn, ladda om webbläsaren och du kan börja felsöka.

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *