2012-01-02 74 views
26

Tôi nhận được lỗi này trong khi tôi đã cố gắng chạy testclass trong phpunit.lỗi nghiêm trọng 'File/Iterator/Autoload.php' không tìm thấy khi chạy phpunit

C:\xampp\htdocs\unittest>phpunit UnitTest usertest.php 
PHP Warning: require_once(File/Iterator/Autoload.php): failed to open stream No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45 
PHP Stack trace: 
PHP 1. {main}() C:\xampp\php\phpunit:0 
PHP 2. require() C:\xampp\php\phpunit:41 

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45 

Call Stack: 
    0.0004  325352 1. {main}() C:\xampp\php\phpunit:0 
    0.0026  366520 2. require('C:\xampp\php\pear\PHPUnit\Autoload.php')xampp\php\phpunit:41 

PHP Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.;C:\php\pear') in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45 
PHP Stack trace: 
PHP 1. {main}() C:\xampp\php\phpunit:0' 

mọi người có thể đưa ra giải pháp cho điều này không ??

Lưu ý: tôi đang sử dụng windows 7.

Cảm ơn,

+0

* (liên quan) * (sửa lỗi sẽ hoạt động): http://stackoverflow.com/questions/8078707/cannot-get-phpunit-working – edorian

+0

* (lưu ý) * Theo tôi có thể nói đây không phải là bản sao và vì đó là vấn đề cài đặt có thể là di chuyển SF nhưng đó là một câu hỏi thực sự :) – edorian

+0

Đã gặp phải lỗi tương tự. Sửa lỗi đơn giản trong trường hợp bạn đang sử dụng nhà soạn nhạc, hãy đảm bảo bạn có phiên bản PHPUnit ổn định mới nhất, ví dụ: 5,5, và tất cả sẽ hoạt động. – ProfNandaa

Trả lời

10

cài đặt phpunit của bạn bị hỏng. Sửa chữa dễ dàng nhất cho việc này là

pear install --force --alldeps phpunit/phpunit 

và xem điều gì có hiệu quả không.

Bạn sẽ cần phiên bản lê mới nhất 1.9.4. Nếu bạn không cài đặt phiên bản đó bằng cách sử dụng go-pear.phar. Nếu bạn đang chạy từ xammp cho một cái gì đó không cố gắng để sửa chữa cài đặt lê họ tàu. Thông thường nó là một LOT dễ dàng hơn để cài đặt lại nó.

Nếu bạn muốn bạn có thể thử chỉ cần cài đặt gói thiếu quá:

pear install phpunit/File_Iterator 

(thêm một --force nếu lê nói với bạn rằng nó đã được cài đặt)

23

Một lý do có thể là sức mạnh này xảy ra là php include_path của bạn không được đặt chính xác. Hãy chắc chắn rằng bạn có đường dẫn thích hợp để PEAR có sẵn. Để cài đặt WAMP của tôi, nó sẽ là:

include_path=".;C:\wamp\bin\php\php5.3.8\PEAR\PEAR" 

Tuy nhiên, rất có thể sẽ khác trên hệ thống của bạn.

Một lưu ý phụ, bạn sẽ muốn cập nhật cả php.ini apache của bạn, cũng như php.ini của bạn nằm trong thư mục cài đặt PHP của bạn. CLI mặc định php.ini, và các yêu cầu web (và thường lần các phần mềm khác mà bạn có thể đang sử dụng các gói PEAR cho) sẽ sử dụng php.ini apache.

Hy vọng điều này sẽ hữu ích.

+3

Đây chính xác là những gì nó dành cho tôi, mặc dù tôi đã không nhận ra nó cho đến khi tôi [RTFM] (http://pear.php.net/manual/en/installation.checking.php). Là một lưu ý phụ, ';' cho các cửa sổ và ':' đối với osx/unix như là seperator dir. – George

+0

Làm việc cho tôi. Trong Ubuntu, đường dẫn của tôi là ".:/Usr/share/pear" trong trường hợp nó giúp ai đó. –

+0

"Tôi cũng vậy" (xin lỗi), trong trường hợp của tôi là do nâng cấp PHP thông qua các cổng Mac đã cài đặt cấu hình php.ini mới, nhưng không được sao chép qua đường dẫn đi kèm được tạo ra. – scipilot

4

Sau 2 ngày kể từ bài đọc, cuối cùng tôi đã giải quyết với hướng dẫn:

sạch pc bằng cách giữ/hư hỏng lắp đặt PHPUnit LINK

và cài đặt lại với hướng dẫn này LINK

3

Đối với tôi sửa lỗi rất đơn giản (Ubuntu 12.04). Trước tiên tôi đã làm một tìm kiếm để chắc chắn rằng các tập tin tồn tại và nơi nó được sở:

locate Autoload.php 

nào nên trả lại kết quả tương tự như sau:

/usr/share/php/File/Iterator/Autoload.php 
/usr/share/php/PHP/CodeCoverage/Autoload.php 
/usr/share/php/PHP/Depend/Autoload.php 
/usr/share/php/PHP/Invoker/Autoload.php 
/usr/share/php/PHP/Timer/Autoload.php 
/usr/share/php/PHP/Token/Stream/Autoload.php 
/usr/share/php/PHPCPD/Autoload.php 
/usr/share/php/PHPUnit/Autoload.php 
/usr/share/php/PHPUnit/Framework/MockObject/Autoload.php 
/usr/share/php/PHP_CodeBrowser/Autoload.php 
/usr/share/php/Text/Template/Autoload.php 

Sau đó, tôi đã kiểm tra include_path của tôi, được thiết lập một cách chính xác trong /etc/php5/apache2/php.ini, nhưng vẫn nhận xét trong /etc/php5/cli/php.ini (giao diện dòng lệnh).

uncommenting dòng này làm việc cho tôi:

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

Khá cơ bản tôi biết, nhưng nó luôn luôn những điều nhỏ khi thiết lập một máy tính mới ;-)

2

tôi đã cùng một vấn đề sử dụng PHP 5.3 trên OSX 10.6 bằng cấu hình máy chủ tích hợp.

Tôi nhận thấy rằng mặc dù PHPUnit đã được cài đặt thành công vào/usr/lib/php, Autoload.php đang cố gắng (dòng 45) để tải tệp Iterator từ thư mục hiện tại của nó (/ usr/lib/php/PHPUnit) hơn thư mục Pear đã cài đặt nó vào (/ usr/lib/php/File). Đây có phải là một lỗi trong trình cài đặt Pear?

Đơn giản ln -s/usr/lib/php/Tệp/usr/lib/php/PHPUnit/File đã giải quyết được sự cố.

+0

Đây là kludge. Lý do thực sự là một include_path bị định cấu hình sai trong php.ini. Điều này chỉ che giấu vấn đề thực sự, và có thể phá vỡ một lần nữa một cách dễ dàng nếu mọi thứ thay đổi một chút. –

+1

@Tim, cảm ơn lời giải thích, tôi đã đặt câu hỏi này ở vị trí đầu tiên và gần như cố gắng thay đổi đường dẫn "require_once". Và sau đó tìm ra bằng cách sửa đổi php.ini. – zhihong

7

Kiểm tra lê cấu hình đã giúp tôi tìm thấy điều này quicky:

bash-3.2# pear config-show | grep php_dir 
PEAR directory     php_dir   /usr/local/pear/share/pear 

bash-3.2# vi /etc/php.ini 
include_path = ".:/php/includes:/usr/local/pear/share/pear" 
+0

Phương pháp này phù hợp với tôi. Trong Ubuntu 12.04, Đầu tiên hãy tìm php_dir, đó là "/ usr/share/php", sau đó sử dụng "định vị php.ini" để tìm đúng vị trí của nó. Trường hợp của tôi là "/etc/php5/cli/php.ini", sau đó thêm/sửa đổi include_path = ".:/Usr/share/php" – zhihong

3

Tất cả các loại điều tốt đẹp Tôi đã đọc về cái này. Kiểm tra đầu tiên nơi đặt Autoload.php. Sử dụng:

$ find . -name 'Autoload.php' -type f 

tôi cho rằng tập tin của bạn được đặt tại:

/usr/local/pear/share/pear 


tôi có Apple OSX 10.8.4 MAMP và MAMP-PRO cài đặt và tôi có một vài cài đặt PHP khác.
Đối với người cuối cùng tôi đã làm như sau: séc đầu tiên nếu có một php.ini trong thư mục: /private/etc
Nếu không, làm:

$ sudo cp /private/etc/php.ini.default /private/etc/php.ini 

Thêm các dòng sau vào dưới cùng của tệp 'php.ini':

; *** Added by <your-name> **** 
include_path=".:/usr/local/pear/share/pear" 
; *** Ended addition **** 

Xong.

0

Ngoài ra, sử dụng gói máy chủ mở có thể nhận thấy rằng nó báo cáo cách include_path quá ngắn.

Để sửa lỗi này trên Windows 7 bạn có thể làm

cd c:\Windows 
mklink php.ini c:\OpenServer\userdata\temp\config\php.ini 
1

Tôi đang sử dụng Ubuntu 14.04 và tôi cài đặt phpunit qua Ubuntu Software Center mà không làm việc.

Cuối cùng tôi loại bỏ nó và tôi làm theo hướng dẫn từ here

wget https://phar.phpunit.de/phpunit.phar 
chmod +x phpunit.phar 
sudo mv phpunit.phar /usr/local/bin/phpunit 
0

tôi đã cùng một vấn đề với các cửa sổ 7 và xampp (php 5.6.11), tôi đã thử tất cả lê cài đặt lại và phpunit nhưng nó không công việc. Khi tôi kiểm tra sự cho phép của C: \ xammp \ php \ pear thư mục nó đã được chỉ đọc, Sau khi tôi thay đổi sự cho phép nó bắt đầu làm việc.

0

Nhìn vào lỗi:

(include_path='.;C:\php\pear') in C:\xampp\php\pear\PHPUnit\Autoload.php 

Các xampp đang cố gắng xác định vị trí mà tập tin trong include_path .;C:\php\pear Nhưng Con đường cho quả lê là .;C:\xampp\php\pear.

Đặt đường dẫn thích hợp cho quả lê và nó sẽ hoạt động. Tôi mới làm nó.

Các vấn đề liên quan