1

拡張機能 (EfontAwesome、参照: www.yiiframework.com/extension/efontawesome ) を Yii に追加すると、「chmod(): 操作が許可されていません」
というメッセージが表示されます。コール スタックは次のようになります。

/opt/lampp/htdocs/yii-1.1.13/framework/utils/CFileHelper.php(133)

121         while(($file=readdir($folder))!==false)
122         {
123             if($file==='.' || $file==='..')
124                 continue;
125             $path=$src.DIRECTORY_SEPARATOR.$file;
126             $isFile=is_file($path);
127             if(self::validatePath($base,$file,$isFile,$fileTypes,$exclude))
128             {
129                 if($isFile)
130                 {
131                     copy($path,$dst.DIRECTORY_SEPARATOR.$file);
132                     if(isset($options['newFileMode']))
133                         chmod($dst.DIRECTORY_SEPARATOR.$file,$options['newFileMode']);
134                 }
135                 elseif($level)
136                     self::copyDirectoryRecursive($path,$dst.DIRECTORY_SEPARATOR.$file,$base.'/'.$file,$fileTypes,$exclude,$level-1,$options);
137             }
138         }
139         closedir($folder);
140     }
141 
142     /**
143      * Returns the files found under the specified directory and subdirectories.
144      * This method is mainly used by {@link findFiles}.
145      * @param string $dir the source directory
Stack Trace
#0  
+  /opt/lampp/htdocs/yii-1.1.13/framework/utils/CFileHelper.php(133): chmod("/opt/lampp/htdocs/im/assets/6950b6ca/css/font-awesome.css", 438)
#1  
+  /opt/lampp/htdocs/yii-1.1.13/framework/utils/CFileHelper.php(136): CFileHelper::copyDirectoryRecursive("/opt/lampp/htdocs/im/protected/extensions/EFontAwesome/assets/cs...", "/opt/lampp/htdocs/im/assets/6950b6ca/css", "/css", array(), ...)
#2  
+  /opt/lampp/htdocs/yii-1.1.13/framework/utils/CFileHelper.php(63): CFileHelper::copyDirectoryRecursive("/opt/lampp/htdocs/im/protected/extensions/EFontAwesome/assets", "/opt/lampp/htdocs/im/assets/6950b6ca", "", array(), ...)
#3  
+  /opt/lampp/htdocs/yii-1.1.13/framework/web/CAssetManager.php(251): CFileHelper::copyDirectory("/opt/lampp/htdocs/im/protected/extensions/EFontAwesome/assets", "/opt/lampp/htdocs/im/assets/6950b6ca", array("exclude" => array(".svn", ".gitignore"), "level" => -1, "newDirMode" => 511, "newFileMode" => 438))
#4  
–  /opt/lampp/htdocs/im/protected/extensions/EFontAwesome/components/EFontAwesome.php(41): CAssetManager->publish("/opt/lampp/htdocs/im/protected/extensions/EFontAwesome/assets", false, -1, true)
36     public function getAssetsUrl() {
37         if (isset($this->_assetsUrl))
38             return $this->_assetsUrl;
39         else {
40             $assetsPath = Yii::getPathOfAlias('efontawesome.assets');
41             $assetsUrl = Yii::app()->assetManager->publish($assetsPath, false, -1, YII_DEBUG);
42             return $this->_assetsUrl = $assetsUrl;
43         }
44     }
45 }

これはデバッグ モードでのみ発生し、プロダクション モードでは発生しません。ディレクトリは Web プロセスによって書き込み可能であり (本番モードで動作することがわかるため)、この拡張機能は数日前にデバッグ モードで完全に正常に動作していました。

簡単な Google 検索では、github でこのクローズされた問題のみを購入しました : https://github.com/yiisoft/yii/issues/1853、forcedCopyと linkAssets の構成の競合に関するもので、Yii-1.1.13 (私が使用しているバージョン) で修正されました。安全のために、メインの設定ファイルで両方の設定を false に設定しようとしました

'assetManager' => array(
            'linkAssets' => false,
            'forceCopy'=>false,
        ),

しかし、問題は解決していません。これを解決する方法についてのアイデアはありますか?

4

0 に答える 0