2012-03-26 6 views
8

PHP 5.4 kommt mit einem eingebauten Server für Entwicklungszwecke. Dies ist die Art von Dingen, auf die ich seit Monaten gewartet habe, denn bis jetzt musste ich irgendwie ein PHP-Skript hacken, das auf eingehende Verbindungen wartet und sie handhabt (weil ich nicht in die Schwierigkeiten gehen will) und Overhead der Installation eines tatsächlichen Servers).Verfügbare Port für PHP-Server finden

Die Hauptsache, um die ich mich kümmern muss, ist: Wie kann ich einen Port zugewiesen bekommen?

In meinem PHP-Skript, habe ich dies zu tun:

socket_bind($sock,"localhost",0) or die("Could not bind socket"); 
socket_getsockname($sock,$ip,$port); 

$port würde die Portnummer vom Betriebssystem zugewiesen dann auf dem, was zur Verfügung steht.

Ich frage mich nur, ob eine solche Funktion in PHP eingebauten Server existiert und, wenn ja, wie die Befehlszeile sein sollte, um darauf zuzugreifen.

+0

+1 für die interessante Frage, aber für das, was es wert ist, klingt das Laufen eines handelsüblichen Servers für mich einfacher als ein PHP-Skript zu hacken, um dasselbe zu tun. – Brad

+1

Es wäre wahrscheinlich gewesen, aber es war eine sehr gute Übung auf dem Netzwerk;) –

+0

WebMatrix kommt mit Treibern für fast alle Funktionen geladen, und es ist ziemlich klein zu installieren. http://microsoft.com/web/webmatrix. Das ist was ich benutze um meine lokalen Entwicklungen zu demonstrieren. – rackemup420

Antwort

1

läuft (Ich habe das folgende Stapelscript verwendet, um einen verfügbaren Anschluss zu finden und den Server zu starten:

@echo off 
for /L %%a in (8000,1,8100) do netstat /a /n | find "%%a" | find "LISTENING" >NUL || set tmp_phpserver=%%a&& goto found 
echo No free ports found in range 8000-8100... 
pause 
exit 
:found 
echo Starting server on port %tmp_phpserver% 
start "PHP server %~p1 on localhost:%tmp_phpserver%" /min php -S localhost:%tmp_phpserver% 
echo Server started 
timeout 3 
start http://localhost:%tmp_phpserver%/%~nx1 
set tmp_phpserver= 
0

Vom PHP docs:

Beispiel # 1 Starten des Web-Server

$ cd ~/public_html 
$ php -S localhost:8000 

dort haben Sie es - der Server auf Port meine eigene Frage zu beantworten 8000.

+1

Das wird fehlschlagen, wenn etwas anderes Port 8000 im Moment benutzt (wie ein anderer PHP-Dev-Server). – duskwuff

+1

darkwuff's Kommentar ist genau der Punkt dieser Frage. –

+0

Ich wusste, ich hätte die Frage ein drittes Mal noch einmal lesen sollen ... – yrosen