2012-10-21 40 views
0

我在網站上實現Zend Framework時遇到問題。這不是一個奇特的應用程序,只是使用一些Zend驗證類和Zend_File_Transfer_Adapter_Http將文件上傳到服務器。 他們都沒有工作。問題是這樣的:我讀過我應該編寫一個htaccess文件來指定站點的文件夾結構,並且應該啓用mod_rewrite。我不知道如何檢查mod_rewrite,因爲我的提供者的控制面板非常無用。如何設置遠程服務器以使用Zend Classes在網站上驗證和上傳文件?

無論如何,我認爲這是足以包括Zend庫這樣的:

$libreria = $_SERVER['DOCUMENT_ROOT']; 
$libreria.='Zend/ZendFramework/library'; 
set_include_path(get_include_path().PATH_SEPARATOR.$libreria); 
require_once('Zend/Loader/Autoloader.php'); 
Zend_Loader_Autoloader::getInstance(); 

但顯然事實並非如此。所以我的另一個問題是:我應該以不同的方式實例化Autoloader,並且我應該指定一個名稱空間,如$loader = Zend_Loader_Autoloader::getInstance(); $loader->registerNamespace(something);我不這麼認爲,因爲我說我只是試圖將驗證類和文件上載類包含到網頁。

最後,我在一些腳本上設置了類PHPMailer來處理用戶輸入,並且每當我似乎包含Zend Framework的正確路徑時,頁面會引發500內部服務器錯誤,但如果我不正確地寫路徑(這是另一個問題,我認爲如果我設置相對於文檔的路徑不起作用,例如,做$libreria='Zend/ZendFramework/library';將不起作用,因爲我看到了爲驗證輸入而設置的所有條件失敗,無我寫的東西

然後最後一個問題是:PHPMailer與Zend Framework有一些不兼容嗎?不好意思問我,但我是一個新手,雖然我檢查了PHPMailer類並且沒有發現任何不兼容的東西,但我必須問。

在此先感謝如果有人願意幫助

我也應該補充一點,我已經測試在本地服務器上這個網站,它工作正常,問題出在遠程服務器上。

此外,我讀過這article here,這是我正在尋找,根據它我應該能夠引用Zend的標準類使用新的運算符。但在遠程服務器上,我不能這樣做,只能在本地進行。

尋找更多我已閱讀關於Zend安裝失敗的可能原因here on this same site,這使我可以澄清我的問題:首先,我認爲這些條件中沒有一個可能失敗,雖然正如我說的我避難所在我的提供程序的遠程服務器上無法檢查mod_rewrite,其次,我的htaccess文件是空的,所以沒有重定向規則(應該拋棄Zend Framework與不正確的htaccess交互的問題,如果我錯了,請糾正我),第三,我沒有訪問php.ini文件。那麼我能做什麼?任何建議都可以接受,因爲我一整個早上都在爲這個問題苦苦掙扎,並且不知道發生了什麼問題。

+0

不知怎的,我懷疑'$ _SERVER ['DOCUMENT_ROOT']'是你的Zend文件夾的根,因爲那將是你的公共文件夾,我們通常不會把我們的庫放到公共文件夾中。 –

+0

@AdrianWorld謝謝。實際上,在設置包含路徑後遇到很多麻煩之後,我會這樣做。我嘗試了Unix根目錄'/ mypath/etcetera,etcetera'和相對路徑'../ ZendFramework /',但都沒有工作。我仍然有這個問題。最近我在注意到ZendFramework沒有被加載後試圖改變.htaccess文件。我在htaccess文件中做了'php_value include_path「:/ home/u230474/Zend'',但是發生的事情是網站的頁面都不能被查看。所以我刪除了對.htaccess的更改。我發佈了另一個關於將dir添加到htaccess的問題 –

回答

1

您必須區分Zend Framework作爲MVC應用程序和獨立庫。你所追求的是獨立庫,不幸的是,很多文檔都是關於ZF作爲MVC應用程序的。 htaccess需要啓動MVC應用程序。

對於ZF作爲獨立庫,您基本上只需要一件事:正確的路徑。如果你喜歡,你可以添加自動加載器,但對於ZF 1.x,這不是一個要求,因爲你有所有的require_once。

現在您只需測試您的路徑是否正常工作。如果你的require_once('Zend/Loader/Autoloader.php');語句沒有拋出一個錯誤,那麼你的基本所有集合都會被拋出,因爲include路徑擴展了require_once語句中的路徑。

用於Autoloader。如果這沒有顯示錯誤,你也應該在這裏設置。不過,您可能與主應用程序發生衝突。在Zend_Loader_Autoloader之後,你應該能夠實例化一個Zend類。嘗試在下一行加載其中一個驗證器。如果在你的應用程序中起作用但不遲於你的應用程序,那麼你可能在該應用程序中有另一個自動加載器來覆蓋Zend加載器。

+0

謝謝,我測試了我的腳本並添加了一些內容,首先是一個簡單的if else子句,以查看庫是否已加載。現在我得到了正確的路徑並加載。然後,在我的每個驗證器上,我都放上了一個類似的if else子句,它們都輸出正常。我實際上檢查了我的代碼,發現我用相同的變量聲明瞭兩個驗證器。修正了這個問題,但是,好像驗證器不起作用,這隻發生在Linux中。我有Linux測試環境,有些東西不起作用。我必須在我的網站的備份上,在某些文件夾上做「chown」。在Linux中它不起作用 –

相關問題