2012-02-23 10 views
5

apache ile backbone.js ve pencereler için kullanımı kolay bir servisi ayarlama. Ben denedim: günlüklerinde şu hata mesajlarıBenim omurga uygulaması için arka uç olarak hizmet etmek benim apache localhost üzerinde dinlendirici web hizmeti kurmak çalışıyorum

  1. WebDAV'ın kurma ama olsun

    [Per 23 Şubat 21:46:17 2012] [hata] ile [istemci 127.0.0.1] edilemiyor/Cluster/19 için yeni içerikler. [403, # 0], referer: http://ideas.localhost/ [Prş. 23 21:46:17 2012] [hata] [istemci 127.0.0.1] Kaynak açılırken bir hata oluştu. [500, # 0], yönlendiren: Normal POST istekleri olarak X-HTTP-Method-Override: PUT başlığına kaynaklanır tahmin bir 405 method not allowed error (bir şey neden Backbone.emulateHTTP, kullanma http://ideas.localhost/

Ben iyi çalışıyor aşağıdaki pencerelerde 7 Apache 2.2.21 ve PHP 5.3 çalıştıran ve m benim .htaccess dosyası. Ben de url yönlendirme işlemek için SLIM çerçeveyi kullanıyorum olduğunu.

RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

ve sanal konak yapılandırma

<VirtualHost *:80> 
    DocumentRoot "G:/sites/ideas" 
    Dav On // I also had security setting set to Allow all as it's just my localhost 
    ServerName ideas.localhost 
    ErrorLog "logs/ideas.localhost-error.log" 
    CustomLog "logs/ideas.localhost-access.log" combined 
    SetEnv APPLICATION_ENV development 
</VirtualHost> 

Çağlar boyunca işe yarayacak bir şey elde etmek için uğraşıyorum, bu nedenle herhangi bir yardım büyük beğeni topladı.

+0

localhost üzerinde bir alt alan mı oluşturuyorsunuz? – Bakudan

+0

Evet, config, – wheresrhys

+0

üzerine yapıştırılmış Ayrıca, ve - Ben, Backbone.emulateHTTP'yi açtığımda, PHP'nin düzgün bir hata ayıklamasını yapmamayı ihmal ettiğim web daveti kullanarak sunucu yapılandırmasıyla bu kadar çok uğraştım. SLIM'in isteği aldığını ve 405 hatasını attığını görüyoruz, bu yüzden belki de sadece başlıkları aramak için uygulamayı yapılandırmam gerekiyor. – wheresrhys

cevap

4

Bir ödül açtıktan sonra sorunu bir saatten az çözdüğümü düşünemiyorum, ama hey ho.

Sorun, Slim'in omurgası tarafından kullanılan X-HTTP-Method-Override başlığını işlemek için yerleşik bir yeteneğe sahip olmaması ve hata iletisinin çok açıklayıcı olmamasıydı. request.php altındaki izleyerek ve omurga içerisine modunu emulateHTTP kullanarak eklemek,

protected function checkForHttpMethodOverride() { 
    if (isset($this->post[self::METHOD_OVERRIDE])) { 
     $this->method = $this->post[self::METHOD_OVERRIDE]; 
     unset($this->post[self::METHOD_OVERRIDE]); 
     if ($this->isPut()) { 
      $this->put = $this->post; 
     } 
    } else if(isset($this->headers['x-method-override'])) { 
     $this->method = $this->headers['x-method-override']; 
     if ($this->isPut()) { 
      $this->put = $this->post; 
     } 
    } 
} 

PS sabit - Ben varsayılan olarak bu içerecek şekilde SLIM için pull request oluşturduk, sence eğer bir olurdu bu yüzden Bu çerçeveye eklemek iyi fikir lütfen bir yorum bırakın lütfen