Php 文件\u获取\u内容和卷曲不在Heroko FREE上工作 编辑4:

Php 文件\u获取\u内容和卷曲不在Heroko FREE上工作 编辑4:,php,.htaccess,curl,heroku,file-get-contents,Php,.htaccess,Curl,Heroku,File Get Contents,如果您使用的是heroku的免费版本(带有一个web dyno),并且我在下面做了一个变通方法,那么这只是一个问题。但这仍然是一个有效的问题,因此我不确定投反对票的原因是什么… 这在本地和另一家网络酒店上都有效 htaccess用于索引,但当像category/traic一样访问“subdir”/mod_rewrite dir时,我得到的只是“Application Error” 编辑 因此,我所做的不是通过.htaccess进行所有重写,而是像这样发送每个请求:到。然后在redirs中,我获取

如果您使用的是heroku的免费版本(带有一个web dyno),并且我在下面做了一个变通方法,那么这只是一个问题。但这仍然是一个有效的问题,因此我不确定投反对票的原因是什么…

这在本地和另一家网络酒店上都有效

htaccess用于索引,但当像category/traic一样访问“subdir”/mod_rewrite dir时,我得到的只是“Application Error”

编辑 因此,我所做的不是通过.htaccess进行所有重写,而是像这样发送每个请求:到。然后在redirs中,我获取页面并输出它,但这只会在heroku上产生应用程序错误,检查日志更令人困惑,因为它报告无法首先获取请求,然后继续并获取它

问题url示例:

我只有免费的插件和基本软件包。我也尝试了curl,但是没有输出数据。数据应该通过curl-empty结果获取,但是redirs.php可以工作

“应用程序错误” “应用程序中出现错误,无法提供您的页面。请稍后再试

如果您是应用程序所有者,请查看日志以了解详细信息。”

所以它试图打开 => :无法打开流:HTTP请求失败!HTTP/1.1 503服务不可用

=>但是如果您尝试手动打开它,它会工作

编辑2 我也得到了这个错误(如下),但从我所读到的,这应该不是一个问题

Jan 11 23:05:21 movie-nights app/web.1:  [Sun Jan 12 07:01:38 2014] [error] server reached MaxClients setting, consider raising the MaxClients setting 
编辑3
请参阅下面我自己的答案中的解决方案

看起来您的代码正在接收一个请求,然后向服务器打开一个新的HTTP请求。不幸的是,您只能处理如此多的并发请求,并且阻塞了所有的工作进程(因此出现了MaxClients错误)。这会导致从web应用程序内部对web应用程序的回拨失败(503不可用)


如果确实要重定向用户,则应返回一个3XX状态代码,其中包含要重定向到的新URL。这将结束当前请求,返回重定向,用户的浏览器将获取新的URL。

我终于想出了一个解决方案!在redirs.php中,我这样做了,而不是curl或file_get_contents(url),其中url是相对url,如/index.php?asf=123&b=3

$file = convUrlToGet($url);
$html = include_once($file);

function convUrlToGet($url) {
    $get = explode('?', $url);
    $file = str_replace('/', '', $get[0]);
    $get = $get[1];
    $gets = explode('&', $get);
    foreach ($gets as $g) {
        $g = explode('=', $g);
        $key = $g[0];
        $value = $g[1];
        $_GET[$key] = $value;
    }
    return $file;
}

问题是我不想重定向到那里,只需要做一个更动态的解决方案,这样我就可以匹配regex,比如/catx/view2/view3/或/view2/catx/view3/或/view3/catx/caty等。。然后在添加新功能时,不必手动更新所有可能的组合。。有点像是我的意图。。但我也认为这就是问题所在。除非我改用两个或更多的dynos,否则我希望它的工作方式无法解决,对吗?这不是免费的:(我正在考虑从php编写.htaccess
Jan 02 00:40:49 movie-nights app/web.1:  [Thu Jan 02 08:40:49 2014] [error] [client 10.34.132.2] PHP Warning:  file_get_contents(http://movie-nights.herokuapp.com/index.php?category=Crime&PHPSESSID=c54qgv6pgj2mme2is32qljs865): failed to open stream: HTTP request failed! HTTP/1.1 503 Service Unavailable\r\n in /app/www/redirs.php on line 92 
Jan 02 00:40:49 movie-nights app/web.1:  10.34.132.2 - - [02/Jan/2014:08:40:19 +0000] "GET /category/Crime/ HTTP/1.1" 200 - 
Jan 02 00:40:50 movie-nights app/web.1:  10.34.132.2 - - [02/Jan/2014:08:40:49 +0000] "GET /index.php?category=Crime&PHPSESSID=c54qgv6pgj2mme2is32qljs865 HTTP/1.1" 200 16864 
Jan 11 23:05:21 movie-nights app/web.1:  [Sun Jan 12 07:01:38 2014] [error] server reached MaxClients setting, consider raising the MaxClients setting 
$file = convUrlToGet($url);
$html = include_once($file);

function convUrlToGet($url) {
    $get = explode('?', $url);
    $file = str_replace('/', '', $get[0]);
    $get = $get[1];
    $gets = explode('&', $get);
    foreach ($gets as $g) {
        $g = explode('=', $g);
        $key = $g[0];
        $value = $g[1];
        $_GET[$key] = $value;
    }
    return $file;
}