Fatal error: Cannot redeclare class Ethna in ... Ethna.php エラーの対処法
私の場合は必ずこれが出ます。
これが出ると、add-actionとか何もできなくなって一瞬憂鬱になりますが、簡単に回避できるのでご安心を。
エラー
>ethna add-action ...なんとかかんとか
Fatal error: Cannot redeclare class Ethna in ... Ethna.php on line 424
原因
Ethnaのライブラリ一式が、同じコンピュータ内に2重で存在している。私の場合、
- PEARチャンネルでインストールしたEthna (C:\php5\PEAR\Ethnaみたいな場所にある)
- 既に作ったプロジェクトのlibフォルダ内のEthna (C:\www\myproject\lib\Ethna)
対処法
ethnaコマンドの実体であるethna.batを書き換えたら動きました。環境によって違うので、あくまでも参考ということでお願いします。
"rem"というのはコメントアウトのことです。(phpでの"//"に相当)
@echo off
rem
rem ethna.bat
rem
rem simple command line gateway
rem
rem $Id: ethna.bat 457 2007-02-07 11:14:39Z ichii386 $
rem
if "%OS%"=="Windows_NT" @setlocal
if NOT "%PHP_PEAR_INSTALL_DIR%" == "" (
rem set DEFAULT_ETHNA_HOME= %PHP_PEAR_INSTALL_DIR%\Ethna
set DEFAULT_ETHNA_HOME=.\lib\Ethna
) ELSE (
set DEFAULT_ETHNA_HOME=%~dp0
)
goto init
goto cleanup
:init
if "%ETHNA_HOME%" == "" set ETHNA_HOME=%DEFAULT_ETHNA_HOME%
set DEFAULT_ETHNA_HOME=
if "%PHP_COMMAND%" == "" goto no_phpcommand
if "%PHP_CLASSPATH%" == "" goto set_classpath
goto run
goto cleanup
:run
rem IF EXIST "C:\php5\pear\Ethna" (
rem %PHP_COMMAND% -d html_errors=off -qC "C:\php5\pear\Ethna\bin\ethna_handle.php" %1 %2 %3 %4 %5 %6 %7 %8 %9
rem ) ELSE (
%PHP_COMMAND% -d html_errors=off -qC "%ETHNA_HOME%\bin\ethna_handle.php" %1 %2 %3 %4 %5 %6 %7 %8 %9
rem )
goto cleanup
:no_phpcommand
set PHP_COMMAND=php.exe
goto init
:set_classpath
set PHP_CLASSPATH=%ETHNA_HOME%\class
goto init
:cleanup
if "%OS%"=="Windows_NT" @endlocal
REM pause
ポイントは、"C:\php5\PEAR\Ethna"のような場所を見に行かないようにすること、"C:\www\myproject\lib\Ethna\bin\ethna_handle.php"を起動するように強制させることです。なお、この書き方の場合は、必ずコマンドプロンプト上のカレントディレクトリを"C:\www\myproject\"にしてからEthnaコマンドを叩く必要があります。(ちょっと不便)
なぜこのようにしてるかというと、PC内にEthnaプロジェクトが3つも4つもあるからです。
どんだけEthna漬けやねん。。
カテゴリ:
Ethna