URL路径不起作用,绝对路径起作用

时间:2013-07-09 02:02:54

标签: php path fastcgi absolute-path

我切换了托管服务提供商,现在遇到了以下问题。

函数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
  3. 我们尝试了很多东西,但无法理解如何使URL路径适用于较新的设置。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

您确定相应地配置了nginx网络服务器吗?这里有一些很好的教程可以解释一些更相关的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

  4. 我链接了这些资源,因为您似乎错误配置了重写引擎。无论如何,请提供更好的背景信息!

答案 1 :(得分:0)

尝试通过函数

更改网址“http://mydomain.com/
    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());

如果没有使用

,你可以替换'$ port'

答案 2 :(得分:0)

当我运行cron时,我在服务器上遇到此问题。

这是基于类似主题我可以说的。

1)页面加载类似〜/.

2)您引用位于〜/../ private / hello / derp.php

的另一页

3)在derp.php里面,假设您正在运行〜/../ private / hello /.'

文件

4)实际上你从〜/。

运行它

5)文件引用错误,因为PWD错误。

我的东西很难找出来,但当我深入研究它时,我重新尝试加载来自〜/../ private / hello / images / hi.jpg之类的东西实际上因为PWD,它正在查看〜/ images / hi.jpg,它们并不存在。

也许这会对你有所帮助。我希望如此。

编辑你也想知道很多时间,〜/。因为你可以和〜/不同。 PUBLIC。这也是需要注意的事项。

尝试通过bash脚本正确使用终端变量。

相关问题