lỗi phpunit Requi_once ()


79

Gần đây tôi đã cài đặt phpunit trên máy chủ của mình thông qua trình cài đặt lê.

Khi tôi chạy thử nghiệm, tôi gặp lỗi sau:

Cảnh báo PHP: request_once (PHPUnit / Util / Filter.php): không mở được luồng: Không có tệp hoặc thư mục nào như vậy trong / usr / bin / phpunit trên dòng 44

PHP Lỗi nghiêm trọng: request_once (): Không mở được yêu cầu 'PHPUnit / Util / Filter.php' (include_path = '.: / Usr / bin / php') trong / usr / bin / phpunit trên dòng 44

Sau khi thực hiện một số tìm kiếm, tôi đã thử thực hiện một số sửa đổi đối với đường dẫn include_path trong tệp php.ini của mình trên máy chủ. Nhưng điều đó không làm được gì.

Bất kỳ ý tưởng những gì có thể gây ra điều này?

Câu trả lời:


123

CẬP NHẬT: Kể từ tháng 11 năm 2013 và Ubuntu 12.04, 2 lệnh này sẽ đủ:

sudo pear config-set auto_discover 1
sudo pear install pear.phpunit.de/PHPUnit

Sau đây là một câu trả lời cũ hơn. Đó là một vấn đề đã biết, mặc dù đã gần một năm rưỡi trôi qua. Đọc về nó ở đây

Vùng phủ mã phải được cài đặt để phpunit hoạt động bình thường

Những gì bạn cần làm được đề cập ở đây:

cài đặt vùng phủ mã thông qua PEAR

Về cơ bản, bạn phải nhập (với sudo nếu bạn không có quyền, hãy lấy rằng phpunit đã được cài đặt):

pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear install phpunit/PHP_CodeCoverage

Tôi đang gặp ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_php" ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_data"lỗi ở bước cuối cùng.
Eray

6
Các giải pháp chính xác cho tôi là trong liên kết đầu tiên bạn đã cho: bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544/comments/...
EnigmaCurry

2
Tôi đã phải thiết lập include_path trong cả file php.ini, /etc/php5/apache2/php.ini, /etc/php5/cli/php.ini, và phải làm cho nó bao gồm phụ huynh và các thư mục con:include_path = ".:/usr/share/php:/usr/share/php/PEAR"
Hobs

7
Trên Ubuntu 12.04, tôi cũng phải vào sudo pear channel-discover pear.symfony.comvà sau đó đã thành công vớisudo pear install --alldeps phpunit/PHPUnit
skierpage 21/09/12

2
Hãy lưu ý! You have installed PHPUnit via PEAR. This installation method is no longer supported and http://pear.phpunit.de/ will be shut down no later than December, 31 2014. ... sẽ làm mất hiệu lực câu trả lời này.
Madbreaks

34

Tôi đã gặp sự cố này trên OS X. Đã khắc phục sự cố bằng các lệnh sau buộc cài đặt lại tất cả các phụ thuộc php, bao gồm một vài gói từ các kênh khác chưa được định cấu hình:

sudo pear channel-discover pear.symfony-project.com
sudo pear channel-discover components.ez.no
sudo pear install --alldeps phpunit/PHPUnit

Đây là giải pháp duy nhất phù hợp với tôi trong Ubuntu 11.10.
mpen

4
Nvm. Nó được cài đặt tốt, nhưng khi tôi cố gắng chạy bất kỳ thử nghiệm thực tế nào thì tôi nhận đượcPHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Framework.php on line 46
mpen

2
Đối với tôi, tôi đã làm điều này và sau đó có một lỗi mà tôi nghĩ rằng đã được giải quyết bởi stackoverflow.com/a/9186866/470749 Ubuntu 12.04
Ryan

1
Không hoạt động đối với tôi - tôi cần channel-discover pear.phpunit.decó thể cài đặt phpunit / phpunit, và sau đó tôi gặp require_once(PHPUnit/Util/Filter.php)lỗi ... tệp không ở đâu trên hệ thống lọc của tôi.
ashgromnies

Hãy lưu ý! You have installed PHPUnit via PEAR. This installation method is no longer supported and http://pear.phpunit.de/ will be shut down no later than December, 31 2014. ... sẽ làm mất hiệu lực câu trả lời này.
Madbreaks

13

https://bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544

và đặc biệt nhận xét này cho ubuntu 11.04 và có thể cho một số người khác nữa

mặc dù tôi đã thực hiện các bước như được khuyến nghị ở trên, tôi không làm cho nó hoạt động nhưng sau khi tôi nâng cấp lê từ 1.9.1 lên 1.9.2, nó hoạt động hoàn hảo, chỉ cần làm điều này

speshu @ speshu-laptop: ~ $ sudo lê nâng cấp lê

   downloading PEAR-1.9.2.tgz ...
   Starting to download PEAR-1.9.2.tgz (295,120 bytes)
    .....................................................done: 295,120 bytes
    upgrade ok: channel://pear.php.net/PEAR-1.9.2
    PEAR: Optional feature webinstaller available (PEAR's web-based installer)
    PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
    PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
    PEAR: To install optional features use "pear install pear/PEAR#featurename"

Tôi đã làm điều này ngay sau khi tôi cài đặt PHPUnit và vẫn có những lỗi, nhưng câu trả lời @StevenGreen 's giúp tôi =) nhưng đó là ok bạn trỏ nó ra =)
Metafaniel


4

https://github.com/sebastianbergmann/php-code-coverage

sb@ubuntu ~ % pear channel-discover pear.phpunit.de
Adding Channel "pear.phpunit.de" succeeded
Discovery of channel "pear.phpunit.de" succeeded

sb@ubuntu ~ % pear channel-discover components.ez.no
Adding Channel "components.ez.no" succeeded
Discovery of channel "components.ez.no" succeeded

sb@vmware ~ % pear install phpunit/PHP_CodeCoverage
downloading PHP_CodeCoverage-0.9.0.tgz ...
Starting to download PHP_CodeCoverage-0.9.0.tgz (108,376 bytes)
.........................done: 108,376 bytes
install ok: channel://pear.phpunit.de/PHP_CodeCoverage-0.9.0

2

(include_path = '.: / usr / bin / php')

Bạn có chắc mình đã thêm nó vào include_path không?

Nó cũng có thể hữu ích nếu chúng tôi thấy tệp ini của bạn và đoạn mã include_path trong đó ...


Vâng, tôi đã thử con đường đó và một số con đường khác. Các nhận xét ở đây được giới hạn trong 600 ký tự nên tôi không chắc mình sẽ hiển thị cho bạn tệp ini của tôi như thế nào. include_path = ".: / usr / bin / php"
user185305

/ usr / bin là nơi chứa các tệp thực thi, không phải thư viện.
Alister Bulman 21/10/09

2

Tôi đã tìm thấy nó!

Có vẻ như PEAR đã cài đặt PHPUnit trong / usr / share / lê. Không chắc tại sao nhưng đó là nơi nó được. Phải là một thứ (mt).

Dù sao, tôi đã sẵn sàng. Cảm ơn đã giúp đỡ.


2

Đây cũng là điều sẽ xảy ra nếu bạn cài đặt PHPUnit lỗi thời hoặc chưa hoàn chỉnh. Xin lưu ý rằng sau khi thiết lập PEAR, bạn phải thêm kênh PHPUnit.de để có được gói cập nhật.


2

Trong trường hợp của tôi, tôi đã giải quyết nó bằng cách thêm /usr/share/php/PEARvào include_path.

Tôi đang sử dụng Ubuntu 10.04.2.


1

Nếu bạn gặp vấn đề với việc truy cập các thành phần, hãy thử cách khác.

  1. Cài đặt quả lê

    sudo apt-get install php-pear
    
  2. Cài đặt phpunitbằng cách sử dụng quả lê.

    pear config-set auto_discover 1
    pear install pear.phpunit.de/PHPUnit
    
  3. Cài đặt phpunit/ Selenium, nhưng trước tiên bạn cần cài đặt curlmô-đun

    sudo apt-get install php5-curl 
    pear install phpunit/PHPUnit_Selenium
    

0

Tôi đã có cùng một vấn đề. Netbeans đã báo cáo rằng phiên bản phpunit quá cũ (không phải phiên bản này). Chạy tập lệnh phpunit trực tiếp hiển thị các thông báo trên.

Tôi đã giải quyết nó bằng cách thêm:

include_path=".:/usr/share/php"

Tới /etc/php5/cli/php.ini

Hãy LƯU Ý rằng tệp php.ini là tệp cho php CLI (lệnh) không phải là php.ini được sử dụng cho apache!


0

Vấn đề ban đầu của tôi là tôi không thể tải phiên bản dòng lệnh của php (yum install php hoặc yum install php-cli) để nâng cấp lên => php5.2.7. Tôi bị kẹt trên phiên bản 5.1

Tôi đã biên dịch php 5.3.3 để sử dụng với apache. Vì vậy, tôi thiết lập một liên kết tượng trưng từ / usr / bin / php (mặc định dòng lệnh) đến phiên bản đã biên dịch của tôi trong / var / php5 / bin / php để nhận được dòng lệnh php báo cáo 5.3.3

Sau đó, tôi thực hiện lại các bước cài đặt lê cho phpunit

Nhưng nó vẫn cần những thứ liên quan đến mã khi tôi chạy phpunit.

Vì vậy, tôi đã tìm kiếm phạm vi bảo hiểm của mã dưới / var / php5 / lib / php / PHP / CodeCoverage và thêm nó vào đường dẫn bao gồm trong php.ini include_path = ".: / Var / php5 / lib / php /"

Đảm bảo thêm nó vào đường dẫn bao gồm không có / PHP vì phpunit bắt đầu từ PHP / (mũ thông báo) tìm kiếm Code Coverage Không mở được yêu cầu 'PHP / CodeCoverage / Filter.php'


0

Tôi đã có vấn đề này. Tôi đang phát triển một trang web khung công tác zend. Cuối cùng, tôi quản lý để giải quyết nó bằng cách xóa cài đặt zend và xóa / nhận xét đường dẫn bao gồm trong tệp bath php.ini trong apache và cli. Để phát triển trang web với zend, chúng tôi không cần phải cài đặt zend. Đã chèn chúng tôi có thể sao chép thư viện vào thư mục trang web của chúng tôi


0

Đối với tôi, việc chia bài kiểm tra thành nhiều đợt đã giúp ích.



0

Ubuntu 12.04:

sudo pear channel-discover pear.symfony.com
sudo pear install --alldeps phpunit/PHPUnit

0

Tôi đã gặp sự cố tương tự với Windows 8 Tương tự như câu trả lời trên, tôi cần khởi động dòng lệnh, tuy nhiên hãy đảm bảo chạy cmd.exe với tư cách quản trị viên . Sau đó, hai lệnh

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.