SimplePie & OpenID

edited 十月 2013 in CakePHP
有朋友使用過這兩個組件的經驗嗎?
在我自己的電腦上面是正常的 (Apache/2.2.4 (Win32) PHP/5.2.1)
但是上傳到 good-host 這個網頁空間就沒法運作了
打開 Debug 模式也找不出是何原因

SimplePie Component
http://sandbox2.pseudocoder.com/demo/simplepie

OpenID Component
http://cakebaker.42dh.com/2008/02/06/new-version-of-the-openid-component/

我在 good-host 上面的環境 (phpinfo):
http://fortelin.ax3.net/posts/test

OpenID 和 Feed 沒辦法 work 的習作:
http://fortelin.ax3.net/posts/index/all

初初學習 CakePHP,只得從最簡單的 Blog 範例開始,還請各位高手多指正~

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=3245

評論

  • edited 三月 2008
    也許是虛擬主機商關閉部份功能造成,只是你並沒有提到問題的細節。
  • edited 三月 2008
    按理說,只要 app/tmp 底下的權限可讀可寫,allow_url_fopen 也在 on 的狀態,這兩個組件應該都可以正常運作才是。但是我現在的情況是,OpenID 無論怎麼輸入都傳回 InvalidArgument 的 Exception; 而 SimplePie 也只能讀既有 Cache 的東西,新的 Feed 吃不進來。實在很懶得去 trace source,以我現在的 PHP 程度也實在沒那種功力。只能寄望有人幫幫忙了。
  • edited 三月 2008
    昨天把 SimplePie Component 換成了 LastRSS ( LastRSS CakePHP Component http://bakery.cakephp.org/articles/view/lastrss-cakephp-component)
    結果是只能連結自己丟出來的 RSS,其它的通通吃不到,錯誤訊息如下:
    sshot1.png
  • edited 三月 2008
    我在 1.2 下試的結果,有兩個地方需要改:
    1. LastrssComponent 的
    vendor('lastrss');
    
    改成
    App::import('Vendor', 'lastrss');
    
    2. view 檔案中的
    } else {
    
    改成
    }} else {
    

    看樣子沒有太大問題
  • edited 三月 2008
    從 basics.php 這一段:

    00146 /**
    00147 * Require given files in the VENDORS directory. Takes optional number of parameters.
    00148 *
    00149 * @param string $name Filename without the .php part.
    00150 */
    00151 function vendor() {
    00152 $args = func_get_args();
    00153 $c = func_num_args();
    00154
    00155 for ($i = 0; $i < $c; $i++) {
    00156 $arg = $args[$i];
    00157
    00158 if (strpos($arg, '.') !== false) {
    00159 $file = explode('.', $arg);
    00160 $plugin = Inflector::underscore($file[0]);
    00161 unset($file[0]);
    00162 $file = implode('.', $file);
    00163 if (file_exists(APP . 'plugins' . DS . $plugin . DS . 'vendors' . DS . $file . '.php')) {
    00164 require_once(APP . 'plugins' . DS . $plugin . DS . 'vendors' . DS . $file . '.php');
    00165 continue;
    00166 }
    00167 }
    00168
    00169 if (file_exists(APP . 'vendors' . DS . $arg . '.php')) {
    00170 require_once(APP . 'vendors' . DS . $arg . '.php');
    00171 } elseif (file_exists(VENDORS . $arg . '.php')) {
    00172 require_once(VENDORS . $arg . '.php');
    00173 } else {
    00174 return false;
    00175 }
    00176 }
    00177 return true;
    00178 }


    可以得知,vendor() 會從 VENDORS 或 APP/VENDORS 這些地方匯入指定的 PHP 檔
    因此應該沒有把 vendor('lastrss'); 改成 App::import('Vendor', 'lastrss'); 的必要
    另外 view 檔案中少了個大括弧很明顯是原作者的筆誤
    至於為什麼 LastRSS Component 會弄到出現 Missing Controller 以及 500.shtml(Internal Server Error?)
    現在我也還沒能理解 ^^
  • edited 三月 2008
    vendor 的部份並非必要,只是會出現提示說這是個老方法,未來會被移除。

    我覺得你的測試環境有些非預設的設定存在,干擾了一些程式的預期情況。
  • edited 三月 2008
    Vendor 的部份你說得很對,我還不曉得它已經被 deprecated 了
    不過,App::import('Vendor', 'lastrss'); 的方式還是有缺點,那就是讀不到大寫的檔案
    所以 cakebaker 上面就有人提供了 App::import('Vendor', 'lastrss', array('file' => 'LastRSS.php')); 這樣的寫法

    另外我也隱約感覺到問題是出在測試環境
    因為上面提到的所有 Component,在我個人 PC 上面都是可以正常運作的 ( Win or Ubuntu)
    也因此,我才在頂樓提供了該環境的 phpinfo 執行網址:http://fortelin.ax3.net/posts/test
    還是很期待有朋友能抽空幫我看個究竟 ^^
Sign In or Register to comment.