使用Sinatra来提供php文件

时间:2011-03-21 20:15:48

标签: php ruby sinatra

我正在使用Sinatra为我们正在进行的一些研究设计一个Web界面。但是,我也希望能够使用phpMyAdmin进行数据库管理。有没有办法让Sinatra提供PHP?我知道可以通过对Apache的一些调整来完成,但由于我不控制我们的设置,我希望能够在Sinatra内部进行。

我将要处理的服务器是Windows(不知道是什么版本),有Ruby 1.9.2,PHP 5.3.5和Apache 2.2,并且没有其他面向Web或与数据库相关的项目

我的目标是能够像这样访问它:

researchserveraddress/app/admin/index.php 其中

researchserveraddress/app/将成为我们应用的主页(由Sinatra提供)。

我很抱歉,如果我不清楚,我对服务器和部署应用程序没有太多经验,到目前为止,我所做的一切都在本地。

2 个答案:

答案 0 :(得分:2)

您可以使用rack-legacy,它允许Sinatra提供PHP文件。它只是使用php-cgi来运行脚本。例如,将phpMyAdmin放在目录admin下,并将这些行中的内容放到config.ru

require 'app'

map "/admin" do
    use Rack::Legacy::Php, 'admin'
    use Rack::Static, :urls => ['/'], :root => 'admin'
    run lambda{|env| [200, {'Content-type' => 'text/plain'}, 'OK']}
end

map "/" do
    run Sinatra::Application
end

(如果您不熟悉在您的Sinatra应用中使用config.ru,请参阅this part of Sinatra docs)。

如果可能,我建议改为配置Apache。它让我感觉更清洁,而且效率更高,但如果你只是将它用于phpMyAdmin,这可能不是问题。

答案 1 :(得分:0)

Sinatra无法解释PHP文件,因此任何嵌入的变量都将保留未处理状态。

您可以使用Sinatra将请求重定向到相应的PHP页面,然后由PHP处理器以正常方式处理。