6

いくつかの JS ajax 呼び出しを使用して、Rails アプリで PHP で記述されたいくつかのスクリプトを実行する必要があります。スクリプトが localhost/scripts でアクティブになり、アプリが localhost:3000/myapplication でアクティブになるクロスドメインの問題が発生しています。localhost への Ajax リクエストは、クロス ドメイン エラーを返します。

jsonp の回避策を実装することができましたが、うまく動作しますが、理想的には Rails フォルダー内から php ファイルにアクセスしたいと考えています。フレームワーク内のフォルダーでPHPを有効にするようにApacheサーバーを構成できることを読みました。LinuxでApache2を実行しています。

試行された解決策 .htaccess ファイルの場所が 100% わからないので、ディレクトリ (public/php-scripts) に作成しました。それが機能するかどうかはわかりませんが...

試行 2: サーバーを正しく構成できないようです: すべてのパッセンジャー コンポーネントをインストールし、次のようにファイルを変更しました: /etc/apache2/sites-available/default

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3
PassengerRuby /usr/bin/ruby1.8
<VirtualHost *:80>
        ServerName myservername
        DocumentRoot /var/www/myapp/public

        <Directory /var/www/myapp/public>
                Allow from all
                Options -MultiViews
        </Directory>
</VirtualHost>

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/

        <Directory /var/www/>
          Options FollowSymLinks
          AllowOverride None
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
         AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>

</VirtualHost>

そして、サーバーを再起動しました。私は何が欠けていますか? myservername/ および myservername/myapp に移動すると、Forbidden メッセージが表示されます

4

2 に答える 2

12

Apacheでパッセンジャーを試しましたか。

これはあなたを助けるはずです。

http://www.abletech.co.nz/blog/serving-php-from-a-rails-app-with-passenger

これの鍵は、特定のルートの乗客を無効にすることです。

これは私のために働く

この行を /etc/apache2/sites-available/default または /etc/apache2/httpd.conf ファイルに入れます (私はサーバー構成の専門家ではないので、いずれかを決定します。これは httpd.conf にありました)

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3
PassengerRuby /usr/bin/ruby1.8

<VirtualHost *:80>
        ServerName myservername
        DocumentRoot /var/www/myapp/public

        <Directory /var/www/myapp/public>
                Allow from all
                Options -MultiViews
        </Directory>
  # route for php app im my example /blog
  Alias /blog /var/www/blog  
  <Location /blog>
    PassengerEnabled off  
  </Location>
</VirtualHost>
于 2012-07-08T10:43:56.593 に答える
0

これは、php-fpmを使用したnginxサーバーの構成です。

「passenger_enabled off;」を追加する必要があります。/public内のすべてのphpファイルが正常に機能するように、phpロケーションブロックで。

server {
  listen 80;
  server_name www.rails-site.com;
  root /var/www/rails_site/public;
  access_log logs/www.rails-site.com.log combined;

  passenger_enabled on;
  passenger_min_instances 10;
  rails_env production;
  client_max_body_size 150M;

  location ~ \.php$ {
    passenger_enabled off;

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}
于 2013-07-23T22:19:33.270 に答える