2013-07-09 93 views
2

我切換了託管服務提供商,現在有以下問題。網址路徑無效,絕對路徑確實

功能imagecreatefromjpeg()正試圖從其URL路徑(http://mydomain.com/contents/category/certificate/1/template.jpg)中讀取文件。此功能在舊設置上工作,但在新設置中失敗並出現以下錯誤。

(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server 
Premature end of script headers: index.php 

一旦我用相同文件的絕對路徑替換URL路徑,問題就消失了。

我可以看到的差別是

  1. 新的設置使用nginx的Apache的反向代理。
  2. 上新安裝的PHP版本是5.3.3,舊的設置有5.3.14

我們已經嘗試了很多東西,但無法瞭解如何使URL路徑上較新的設置工作。任何人都可以幫忙嗎?

+0

您可能已經遇到它,但在做一些研究後,我發現[this](http://serverfault.com/questions/120150/php-5-3-2-fcgid-2-3-5- Apache的2-2-14-suexec的連接位復位逐同行MO)。這可能是相關的 – Orangepill

+0

你有沒有檢查過你的.htaccess文件,以確保你的舊主機沒有自定義的PHP處理程序? – stefancarlton

+0

「讀取文件」究竟意味着什麼?你正在做一個'include()'/'require()'嗎? – Sliq

回答

1

你確定了相應的配置你的Web服務器nginx的你可以替換「$端口」更改URL「http://mydomain.com/」?這裏是可以解釋一些更相關的Nginx和PHP FastCGI進程管理器常見陷阱的一些好的教程:

  1. Ars Technica: Web Served part 1: Setting up a web server

  2. Ars Technica: Web Served part 3: Installing PHP Fastcgi Process Manager

  3. Nginx common pitfalls

我鏈接這些資源,因爲它看起來好像你的重寫e的配置有誤ngine。無論如何,請提供更好的背景!

0

試圖通過一個函數

function selfURL(){ 
    $server1 = $_SERVER['HTTPS']; 
    $server2 = $_SERVER['SERVER_PROTOCOL']; 
    $server3 = $_SERVER['SERVER_PORT']; 
    $server4 = $_SERVER['SERVER_NAME']; 


    $s = empty($server1) ? '' : ($server1 == "on") ? "s" : ""; 
    $protocol = strleft(strtolower($server2), "/").$s; 
    $port = ($server3 == "80") ? "" : (":".$server3); 
    return $protocol."://".$server4.$port; 

    } 
function strleft($s1, $s2){ 
return substr($s1, 0, strpos($s1, $s2)); 
} 
print(selfURL()); 

如果不使用

0

我在我的服務器上運行cron時遇到了這個問題。

這裏是我可以說基於類似的話題。

1)一個頁面加載類似〜/。

2)可引用位於〜/../私人/你好/ derp.php

3)內derp.php它是你正在運行的〜/文件的假設下,另一頁.. /私營/你好/「。

4)實際上你正在運行它〜/。 5)文件引用是錯誤的,因爲PWD是錯誤的。

我的東西很煩人,但是當我深入地看着它時,我發現它試圖從〜/../ private/hello/images/hi.jpg等東西中加載東西。因爲PWD的真實性,它正在尋找不存在的〜/ images/hi.jpg。

也許這會幫助你。我希望它。

編輯你也想知道很多時間〜/。因爲你可以不同於〜/。的公共。這也是需要注意的一點。

嘗試通過bash腳本正確使用終端變量。

+1

通過使用魔術常量'__DIR__',您可以始終使用當前文件的存儲目錄,並使用它創建絕對路徑。那樣,你就不會陷入這個陷阱。另請注意,cronjob不一定會繼承爲登錄shell配置的完整環境。通常只有一個基本的設置,任何路徑都應該是絕對的 - 否則命令會失敗,因爲找不到它們。 – Sven

+0

該死的。每天學些新東西。哈哈。感謝那個指針。 – Fallenreaper