2012-01-13 40 views
17

Tôi cố gắng sử dụng khung Silex làm cơ sở cho ứng dụng web của mình. Tuy nhiên, nếu tôi cố gắng để bao gồm các * lưu trữ .phar, PHP ném các lỗi sau:PHP: Lớp 'Phar' không tìm thấy

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

Các dòng có liên quan sau nằm trong thể tôi /etc/php/php.ini (như đề xuất trong tài liệu của silex):

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

Thư viện PHAR có trong /usr/lib/php/modules/phar.so được đặt làm đường dẫn mở rộng cho tất cả các thư viện trong số php.ini

Có ai biết tại sao PHP đang ném lỗi này không?

Trả lời

13

Cố gắng xác định path to the extension:

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

tùy chọn khác:

Dựa trên những thông tin mà bạn cung cấp, có một vài khả năng:

  • Bạn đang sử dụng khác nhau php.ini. Kiểm tra đầu ra của phpinfo() để xác nhận và đảm bảo rằng bạn đang chỉnh sửa thiết bị đang hoạt động.

  • /usr/lib/php/modules/phar.so không thể đọc được. Đảm bảo rằng người dùng máy chủ web có thể đọc tệp này.

  • Máy chủ web của bạn chưa được khởi động lại kể từ lần cuối bạn thêm thông tin liên quan đến phar vào php.ini. Khởi động lại máy chủ web của bạn.

+1

Cảm ơn, tôi đã kiểm tra tất cả các đề xuất của bạn. Thật không may, lỗi vẫn giữ nguyên. – SecStone

+0

Tôi đã đánh dấu đây là câu trả lời đúng khi bạn cung cấp danh sách tốt những gì có thể là nguyên nhân. Trong trường hợp của tôi, máy chủ web đã được cấu hình theo cách mà nó âm thầm thất bại khi đọc php.ini. Vì vậy, tôi đã không phát hiện ra một số dòng trên dòng 'extension = phar.so'. – SecStone

+0

Tôi chưa bao giờ nghe nói về PHP không âm thầm khi nó cố đọc php.ini. Bạn có thể giải thích về nguyên nhân và giải pháp không? –

0

Hm. Tôi nghĩ bạn cần require_once 'phar://silex/silex.phar/autoload.php'; thay vì require_once 'silex/silex.phar';. Nếu đây không phải là trường hợp thì chúng ta cần xem mã ném một lỗi.

18

này làm việc cho tôi:

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

này bao gồm phần mở rộng Phar cho thời gian chạy hiện hành. Làm việc cho các máy chủ chia sẻ/VPC.

0

trong môi trường lưu trữ của tôi, tôi cần chỉ định số phiên bản php. EG:

php-5,6 composer.phar

không

php composer.phar

0

Hy vọng điều này có thể làm sáng tỏ. Tôi đã sử dụng một máy chủ chia sẻ và gặp khó khăn khi soạn nhạc để chạy. Tôi đã sử dụng trang web này hướng dẫn http://avantidevelopment.com/install-composer-on-bluehost/ để thiết lập một thư mục phổ biến và cài đặt nhà soạn nhạc trong đó. Tôi đã theo dõi nó nhưng thêm vào bí danh của tôi, tôi đã thêm lệnh sau vào .bashrc

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

Điều đó đã làm cho tôi. Hy vọng bất cứ ai tình cờ trên bộ này ra một bóng đèn.

0

Đối Mageia 4, Mageia 5, Mageia 6 người đã

 
>> 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    ############################################### 
>> 
Các vấn đề liên quan