【问题标题】:Use Sinatra to serve php files使用 Sinatra 提供 php 文件
【发布时间】:2011-03-22 15:08:28
【问题描述】:

我正在使用 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 提供)。

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

【问题讨论】:

标签: php ruby sinatra


【解决方案1】:

您可以使用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,这可能不是问题。

【讨论】:

    【解决方案2】:

    Sinatra 无法解释 PHP 文件,因此任何嵌入的变量都不会被处理。

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

    【讨论】:

    • 把PHP文件放到public文件夹里还不够吗? (我不知道)。
    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多