2011-01-11 66 views
2

我試圖在使用zend框架的phmtl視圖腳本文件中包含一個JavaScript文件。 javascript文件和phtml文件都是php庫的一部分,位於我的項目的doc根文件夾之外。因此,文件結構看起來像使用zend框架在doc根目錄之外包含一個javascript文件

/var/www/vhosts/project/ 
/var/www/vhosts/libraries/my-lib/view/viewscript.phtml 
/var/www/vhosts/libraries/my-lib/js/javascript.js 

/無功/網絡/虛擬主機/庫/我-lib中已添加到使用通過set_include_path PHP的路徑。在viewscript.phtml中,我使用下面一行來包含javascript.js。

<?php $this->headScript()->appendFile('js/javascript.js'); ?> 

由於某些原因,即使我指定絕對路徑而不是相對路徑,也不包括javascript.js。相反,我在頭部的一個標籤中收到了我的網頁的整個副本。如果我將javascript.js放入doc根目錄文件夾/ var/www/vhosts/project並更改appendFile()路徑,那麼它工作得很好。如何在doc根目錄外包含JavaScript?

+3

你不能。瀏覽器需要doc內的某些內容才能訪問。你可以創建一個通過腳本的PHP文件,或者如果你有權訪問服務器的配置,可以使用`Alias` – 2011-01-11 15:03:34

回答

2

基於你以前提出的問題,我認爲你的目錄是某些pr爲你而設的 這裏是Zend框架(部分)

var/ 
    www/ 
    vhosts/ 
     otherproject/ 
     project/ 
      src/ <-- maybe some project src can be here and not in your libraries 
      htdocs/ <--- real apache document root 
       css/ 
       js/ 
      var/ 
       log/ 
       sessions/ 
      etc/ 
      doc/ 
     libraries/ 
      Zend/ 
      my-lib/ 
        js/ 

以便Apache documentRoot在/ var/WWW /項目/ htdocs目錄一個functionnal和安全的例子或目錄的組織。在這裏,我們可以找到index.php文件,這是公共訪問中唯一可用的php文件。

在htdocs/js & htdocs/css中,您可以將一些您的項目js & css文件。然後,你已經完成了外部php庫的css和js文件的問題,這些文件現在完全位於web根目錄之外。

我通常所做的就像其他人在這裏所說的那樣,從外部目錄鏈接到到web根目錄內的js目錄。但更精確,並保持良好的東西在這裏組織了你應該做的有:

ln -s /var/www/project/libraries/my-lib/js /var/www/project/htdocs/js/my-lib 
ln -s /var/www/project/libraries/my-lib/css /var/www/project/htdocs/css/my-lib 

而且你應該爲所有的外部具有LIB文件,應該在文檔根做到這一點。 這樣,my-lib的js文件的基礎URL是/ js/my-lib /。

不要害怕使用符號鏈接(windows上的連接),你甚至可以將它們存儲在Subversion存儲庫中。只要檢查你的Apache配置是否允許符號鏈接(Options + FollowSymlinks)

2

appendFile()中提供的路徑與網站的文檔根目錄(例如您的「公共」文件夾)相關。它不會在php的include_path中找到。

您可以將js文件移動到doc根目錄,在doc根目錄創建一個符號鏈接,或者您可以使用php讀取文件並將其內容作爲<script>標籤輸出。

+0

如何編寫appendExternalFile()這樣的東西? – markus 2011-01-12 09:44:35

+0

appendFile()僅使用您指定的路徑輸出

相關問題