我正在使用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提供)。
我很抱歉,如果我不清楚,我对服务器和部署应用程序没有太多经验,到目前为止,我所做的一切都在本地。
答案 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处理器以正常方式处理。