2012-01-13 136 views
17

我嘗試使用Silex框架作爲我的Web應用程序的基礎。但是,如果我嘗試包括* .phar檔案,PHP引發以下錯誤:PHP:沒有找到'Phar'類

Fatal error: Class 'Phar' not found in /var/www/framework/silex.phar on line 11 

以下相關線路都在我/etc/php/php.ini(如建議在捷希凱的文檔):

extension=phar.so 
phar.readonly = Off 
phar.require_hash = Off 
detect_unicode = Off 

PHAR庫存在於/usr/lib/php/modules/phar.so,它被設置爲我的所有庫的擴展路徑php.ini

有誰知道爲什麼PHP會拋出這個錯誤?

回答

13

嘗試指定的path to the extension

php -d extension=phar.so composer.phar <your_script> 

其他選項:

根據您所提供的信息,有幾種可能性:

  • 您使用的是不同的php.ini中。檢查phpinfo()的輸出以確認,並確保您正在編輯活動的。

  • /usr/lib/php/modules/phar.so不可讀。確保Web服務器用戶可以讀取此文件。

  • 自您上次將phar相關信息添加到php.ini以來,您的Web服務器尚未重新啓動。重新啓動您的網絡服務器。

+1

謝謝,我檢查了所有你的建議。不幸的是,錯誤仍然是一樣的。 – SecStone 2012-01-13 13:31:39

+0

我將此標記爲正確的答案,因爲您提供了一個很好的列表,原因可能是什麼。在我的情況下,Web服務器的配置方式是在讀取php.ini時以靜默方式失敗。所以我沒有在'extension = phar.so'行的上面發現一些錯誤。 – SecStone 2012-01-20 15:28:01

+0

當我試圖閱讀php.ini時,我從來沒有聽說過PHP默默無聞地失敗。你能詳細說明原因和解決方案嗎? – 2012-01-20 16:21:45

0

嗯。我認爲你需要require_once 'phar://silex/silex.phar/autoload.php';而不是require_once 'silex/silex.phar';。如果情況並非如此,那麼我們需要看到代碼拋出錯誤。

18

這個工作對我來說:

php -d extension=phar.so composer.phar [... your command ...] 

這包括當前運行時的Phar擴展。適用於共享/ VPC服務器。

0

在我的託管環境中,我需要指定php版本號。 EG:

的PHP 5.6 composer.phar

PHP composer.phar

0

希望這可以提供一些線索。我使用的是共享主機,無法讓作曲者運行。我正在使用這個網站的方向http://avantidevelopment.com/install-composer-on-bluehost/來設置一個公共目錄並在其中安裝composer。我跟着它,但要加我的別名我添加了以下命令.bashrc

alias composer='/ramdisk/php/54/bin/php54-cli ~/common/composer.phar' 

這對我來說是訣竅。希望任何絆倒在這上面的人都會發出一個燈泡。

0

對於Mageia 4,Mageia 5,6 Mageia用戶

 
>> urpmi php-phar;echo done 
To satisfy dependencies, the following packages are going to be installed: 
    Package      Version  Release  Arch 
(medium "Core Release2") 
    php-bz2      5.6.30  2.mga6  x86_64 
    php-phar      5.6.30  2.mga6  x86_64 
326KB of additional disk space will be used. 
151KB of packages will be retrieved. 
Proceed with the installation of the 2 packages? (Y/n) y 


    $MIRRORLIST: media/core/release/php-bz2-5.6.30-2.mga6.x86_64.rpm 
    $MIRRORLIST: media/core/release/php-phar-5.6.30-2.mga6.x86_64.rpm 
installing php-phar-5.6.30-2.mga6.x86_64.rpm php-bz2-5.6.30-2.mga6.x86_64.rpm 
Preparing...      ############################################### 
     1/2: php-bz2    ############################################### 
     2/2: php-phar    ############################################### 
>>