2011-03-21 72 views
0

我正在使用Sinatra爲我們正在做的一些研究設計一個Web界面。不過,我也希望能夠使用phpMyAdmin進行數據庫管理。有什麼辦法讓Sinatra提供php嗎?我知道這可以通過對Apache的一些調整來完成,但由於我不能控制我們的設置,我希望能夠從Sinatra內部完成。使用Sinatra來提供php文件

我將要工作的服務器是Windows(不知道是什麼版本),有Ruby 1.9.2,PHP 5.3.5和Apache 2.2,並且沒有其他面向Web或數據庫的項目它。

我的目標是要能夠訪問它像這樣:

researchserveraddress/app/admin/index.php 其中

researchserveraddress/app/將是我們的應用程序的主頁(由西納特拉服務)。

對不起,如果我不清楚,我沒有很多的服務器和部署應用程序的經驗,到目前爲止,我所做的一切都是在本地。

+0

簡答題,沒有。 – 2011-03-21 20:32:44

+0

這可能是有用的:https://github.com/creationix/rack-php – igorw 2011-03-21 20:39:14

回答

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 

(如果你不熟悉使用config.ru與西納特拉的應用程序,請參見this part of Sinatra docs)。

如果可能的話,我會建議配置Apache。它讓我覺得自己是一個更清潔的解決方案,它也會更有效率,但如果您只是將它用於phpMyAdmin,那麼這可能不是問題。

0

Sinatra無法解釋PHP文件,因此任何嵌入的變量都將保留未處理狀態。

您可以使用Sinatra將請求重定向到適當的PHP頁面,然後由PHP處理器以正常方式處理。

+0

將PHP文件放入公用文件夾不夠嗎? (我不知道)。 – Alexey 2012-10-11 18:15:50