2014-07-17 86 views
0

首先,我使用Windows(XP - 是的,我知道),php-fpm(5.4.9)和nginx(1.5.10)。我的本地開發環境運行良好。PHP cURL本地域名解析

我使用本地域名的.dev擴展名來指向本地網站項目。例如:​​或www.example.dev

我設置我的hosts文件(C:\Windows\System32\drivers\etc\hosts)包含這些額外的記錄: 127.0.0.1 example.dev www.example.dev

當我平他們的域名www.example.dev它解析爲127.0.0.1如你所願。

我可以在我的瀏覽器中訪問該頁面:http://www.example.dev,它會顯示您希望看到的一些'Hello World'文本。現在

如果我運行在瀏覽器下面的腳本,這是行不通的:

<?php var_dump(file_get_contents('http://www.example.dev')); ?> 

對我來說只是nginx的時間出,即使我能找到它在我的瀏覽器沒有問題。

現在對於捲曲,後續無法正常工作或:

<?php 

    $url = 'http://www.example.dev'; 

    $ch = curl_init(); 

    $options = array(
     'CURLOPT_URL'    => $url, 
     'CURLOPT_HEADER'   => TRUE, 
     'CURLOPT_FAILONERROR'  => FALSE, 
     'CURLOPT_FOLLOWLOCATION' => TRUE, 
     'CURLOPT_AUTOREFERER'  => TRUE, 
     'CURLOPT_RETURNTRANSFER' => TRUE, 
     'CURLOPT_FRESH_CONNECT' => TRUE, 
    ); 

    foreach ($options as $k => $v) 
    { 
     curl_setopt($ch, constant($k), $v); 
    }; 

    $response = curl_exec($ch); 
    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); 
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    $info  = curl_getinfo($ch); 

    curl_close($ch); 

    var_dump($response); exit; 
?> 

但是如果我用本地主機替換example.dev,這些代碼示例看起來確實工作。

回答

0

這似乎與PHP-FPM實際上不能在Windows上工作有關。請參閱https://stackoverflow.com/a/10640722/156406

最簡單的方法是使用.bat文件生成自己的PHP實例池,並使用nginx將請求發送到池。

創建以下php-pool.bat更新您的特定安裝的所有參考。

@ECHO Off 
SETLOCAL EnableDelayedExpansion 
SET phpdir=C:\Server\php\5.4.9 
SET phpnum=3 

REM Kill currently running PHP Processes. 
TASKKILL /f /IM php-cgi.exe 

FOR /L %%G IN (0, 1, %phpnum%) DO (
    REM ECHO Starting PHP Instance: %phpsrv%:900%%G 
    START /b %phpdir%\php-cgi.exe -b 127.0.0.1:900%%G: -c %phpdir%\php.ini 
) 

然後更新您的nginx的配置文件:

upstream backend { 
    server 127.0.0.1:9000 weight=1; 
    server 127.0.0.1:9001 weight=1; 
    server 127.0.0.1:9002 weight=1; 
} 

server { 
    ... 
    location ~ \.php$ { 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass backend; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 
    ... 
} 

這不是一個完美的解決方案,但得到的例子爲我工作。查看更多這裏: https://bitbucket.org/cybergene/spawn-php/wiki/Home