Используйте Синатру для обслуживания файлов php - PullRequest
0 голосов
/ 21 марта 2011

Я использую Sinatra для разработки веб-интерфейса для некоторых исследований, которые мы проводим. Однако я также хочу использовать phpMyAdmin для администрирования базы данных. Есть ли способ заставить Синатру подать php? Я знаю, что это можно сделать с помощью некоторых настроек Apache, но, поскольку я не контролирую наши настройки, я надеялся, что смогу сделать это из Sinatra.

Сервер, на котором я буду работать, - Windows (не знаю, какая версия), имеет Ruby 1.9.2, PHP 5.3.5 и Apache 2.2, и на нем нет других проектов, связанных с веб-интерфейсом или базами данных. .

Моя цель - быть в состоянии получить к нему доступ так:

researchserveraddress/app/admin/index.php где

researchserveraddress/app/ будет главной страницей нашего приложения (обслуживается Синатрой).

Извините, если мне неясно, у меня нет большого опыта работы с серверами и развертыванием приложения, пока все, что я делал, было локально.

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Вы можете использовать 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 с вашим приложением Sinatra, см. эта часть Sinatra docs ).

Я бы предложил вместо этого настроить Apache, если это возможно.Мне кажется, что это более чистое решение, и оно будет более эффективным, но это, вероятно, не проблема, если вы используете его только для phpMyAdmin.

0 голосов
/ 22 марта 2011

Sinatra не может интерпретировать файлы PHP, поэтому любые встроенные переменные останутся необработанными.

Вы МОЖЕТЕ использовать Sinatra для перенаправления запросов на соответствующую страницу PHP, которая затем обрабатывается обычным образомPHP процессор.

...