Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Tôi quay lại để giải quyết một lỗi khác mà bạn có thể gặp phải trong Magento 2. Hôm nay là về “Không thể mở luồng. Không có tệp hoặc thư mục như vậy trong trình soạn thảo autoload_real. lỗi php” trong Magento 2. Trước đó, tôi cũng đã chia sẻ giải pháp cho PHP Fatal Error “Call to Undefined Function str_contains()” Sau khi nâng cấp lên Magento 2. 4. x – Nhấn vào đây để giải quyết

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Trong khi làm việc trên các dự án, nhà phát triển của chúng tôi đã gặp một lỗi và đã cố gắng giải quyết nó. Với những nỗ lực nghiêm túc, cuối cùng họ đã giải quyết được lỗi. Do đó, chúng tôi quyết định chia sẻ với tất cả các bạn để dễ dàng hơn nếu bạn gặp phải lỗi này trong tương lai. Hãy tìm hiểu thêm về lỗi tự động tải của nhà soạn nhạc

nội dung

  • 1 Giới thiệu.
  • 2 Cách khắc phục Không thể mở luồng. Không có tệp hoặc thư mục như vậy trong trình soạn thảo autoload_real. php Lỗi trong Magento 2?
  • 3 Kết luận.

Giới thiệu

Khi chúng tôi chạy lệnh bên dưới trong thiết bị đầu cuối để gỡ cài đặt mô-đun qua trình soạn thảo,

1

php bin/mô-đun magento:gỡ cài đặt Vendor_Extension --xóa-static-content

Lỗi sau xuất hiện trong thiết bị đầu cuối cũng như máy chủ cục bộ,

Cảnh báo. yêu cầu(/var/www/html/M243/vendor/composer/. /magento/mô-đun-liên hệ/đăng ký. php). không thể mở luồng. Không có tệp hoặc thư mục như vậy trong /var/www/html/M243/vendor/composer/autoload_real. php trên dòng 73

Lỗi nghiêm trọng. yêu cầu(). Yêu cầu mở không thành công '/var/www/html/M243/vendor/composer/. /magento/mô-đun-liên hệ/đăng ký. php' (include_path='/var/www/html/M243/vendor/magento/zendframework1/library. /usr/share/php’) trong /var/www/html/M243/vendor/composer/autoload_real. php trên dòng 73

Lỗi trên trang web

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Lỗi trên thiết bị đầu cuối

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Vì vậy, hãy cho chúng tôi biết cách chúng tôi khắc phục lỗi này

Cách khắc phục Không thể mở luồng. Không có tệp hoặc thư mục như vậy trong trình soạn thảo autoload_real. Lỗi php trong Magento 2?

Bạn chỉ cần chạy lệnh dưới đây trong thư mục gốc của Magento

1

trình soạn thảo dumpautoload

Sự kết luận

Rất đơn giản phải không? . Không có tệp hoặc thư mục như vậy trong trình soạn thảo autoload_real. lỗi php” trong Magento 2. Hãy cho tôi biết nếu lỗi vẫn còn. Nếu bạn gặp phải bất kỳ lỗi nào khác khi làm việc với Magento 2, hãy liên hệ với Nhà phát triển Magento có kinh nghiệm của chúng tôi.

Chia sẻ bài viết với những người bạn Magento khác của bạn và giữ liên lạc với chúng tôi để có thêm hướng dẫn về Magento

Đã bao nhiêu lần bạn thấy một đoạn mã dường như được viết vội vàng? . Trong một số trường hợp, nó được viết bởi người khác, nhưng thường thì những sáng tạo của chính bạn, nếu có đủ thời gian, sẽ khiến bạn phải suy nghĩ. "ai đã viết cái thứ tào lao này"? . Đã đến lúc bắt đầu phân tích mã tĩnh trong PHP

Giữ mã trong tầm kiểm soát là một chuyện, nhưng tệ hơn nữa là thực tế là không có tiêu chuẩn mã chung nào. Các dự án, khung và thư viện mã nguồn mở khổng lồ áp dụng các tiêu chuẩn lập trình của riêng họ. Vấn đề đã được chú ý cách đây một thời gian và nó đã dẫn đến nguồn gốc của Khuyến nghị tiêu chuẩn PHP (PSR). Đó là một tài liệu được thực hiện bởi các tác giả của các dự án PHP phổ biến nhất.

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Mã tốt so với mã xấu

Mặc dù các đề xuất chính (PSR-0 đến PSR-4) đã được phần lớn cộng đồng PHP thừa nhận là thực tế standard, later attempts at unifying more common application elements often failed and so many people have left the project since, including the authors of such famous projects as Symfony, Laravel, Doctrine or Guzzle.

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Tiêu chuẩn cạnh tranh

Các nhà phát triển cũng thay đổi các tiêu chuẩn về chất lượng và độ sạch của mã. Việc thiếu các tiêu chuẩn mã hóa làm sạch ở cấp độ dự án có thể dẫn đến các tranh chấp không cần thiết trong quá trình Đánh giá mã

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Hai loại người

Duy trì chất lượng mã khá tốt không phải là một nhiệm vụ dễ dàng. Dưới đây, tôi sẽ cố gắng chỉ cho bạn một vài công cụ phân tích mã tĩnh, có thể giúp bạn điều đó

Nhưng phân tích mã tĩnh là gì?

Phân tích mã tĩnh PHP là một hành động được thực hiện bởi công cụ phân tích mã tĩnh, được thiết kế để đọc mã nguồn PHP mà không thực sự chạy nó. Thực hiện phân tích như vậy thường là một phần của quy trình Tích hợp liên tục. Máy phân tích tĩnh cho phép lập trình viên giới hạn và dự đoán hành vi của phần mềm mà không cần chạy nó

Bộ phân tích mã tĩnh cũng đơn giản hóa và giúp người đánh giá kiểm tra mã, theo quy tắc “cái gì có thể tự động hóa thì nên tự động hóa”

Sự đa dạng của các công cụ phân tích mã tĩnh trong cộng đồng PHP là khá lớn. Một số trong số đó là

  • Tiêu chuẩn mã hóa dễ dàng (ECS),
  • PHPStan,
  • thánh vịnh

Thông tin thêm về ba điều đó sau. Ngoài chúng, còn có rất nhiều công cụ khác. Theo kinh nghiệm cá nhân của tôi, tôi chỉ sử dụng chúng một cách tiết kiệm, nhưng một số trong số chúng chắc chắn khả thi. Bạn có thể dùng thử

  • Trình sửa lỗi kiểu mã PHP (Trình sửa lỗi PHP CS)

Bạn có thể sửa mã của mình theo một tiêu chuẩn đã chọn, bao gồm cả những tiêu chuẩn được phát triển bởi các cộng đồng cụ thể như Symfony

  • Bộ dò mã PHP (PHP_CodeSniffer)

Sửa lỗi vi phạm tiêu chuẩn mã hóa và mã hóa các tệp PHP, JS và CSS

  • Phan

Một bộ phân tích mã với mục tiêu chứng minh tính không chính xác, tránh dương tính giả

  • Thông tin chi tiết về PHP

Hoạt động với nhiều khung, cung cấp các báo cáo đẹp

  • hiệu trưởng

Nó có thể giúp bạn nâng cấp PHP của bạn

  • SonarQube

Cái này có cộng đồng lớn và hỗ trợ rất nhiều ngôn ngữ ngoài PHP

  • Deptrac

Nó mô tả chính nó như một công cụ giúp trực quan hóa và thực thi các quyết định kiến ​​trúc. Vẫn đang trong quá trình phát triển

Trong phần tiếp theo của bài viết, tôi sẽ giới thiệu cho bạn ba công cụ phân tích mã yêu thích của tôi, mà tôi sử dụng trong hầu hết các dự án của mình. ECS, PHPStan và Psalm đã nói ở trên

Tại sao nói riêng về ECS, PHPStan và Psalm? . Tại sao ba mà không chỉ một? .  

Như tôi đã đề cập trước đó, các dự án thường có các phong cách viết mã khác nhau, “cũ”. Lập trình viên tham gia dự án cũng có thói quen riêng. Đó là lý do tại sao cấu hình của máy phân tích phải được cá nhân hóa cho từng dự án và phải được lưu trong kho lưu trữ của dự án đó. Để tạo thuận lợi cho quá trình cấu hình, tôi sẽ chỉ cho bạn một số tệp cấu hình cơ bản mà chúng tôi sử dụng tại Ngôi nhà phần mềm

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Sửa mã của tôi

Trước khi bạn bắt đầu sửa mã của mình, bạn nên tìm hiểu một số quy tắc có thể giúp ích cho bạn trong suốt quá trình

  1. Cam kết mã trước khi bạn chạy bất kỳ lệnh nào thay đổi mã và trước khi thực hiện bất kỳ thay đổi nào trong cấu hình của công cụ. Chạy nó có thể dẫn đến tập lệnh làm hỏng mã của bạn và các thay đổi có thể khó khôi phục
  2. Chạy thử nghiệm sau mỗi lần thay đổi mã để đảm bảo rằng mọi thứ vẫn hoạt động như mong đợi
  3. Khi định cấu hình máy phân tích, tốt nhất bạn nên bắt đầu với tất cả các trình kiểm tra và trình sửa lỗi có sẵn. Sau đó, bạn nên loại trừ những thứ bạn không cần hoặc không muốn thực hiện. Rốt cuộc, bạn sẽ nhận được số lượng cải tiến phù hợp nhất
  4. Thật vô nghĩa khi sử dụng các phần bổ sung IDE cho tác vụ này hoặc thậm chí thêm các tập lệnh đó dưới dạng móc nối trước khi cam kết. Việc sử dụng chúng làm người lập trình mất tập trung. Thay vào đó, tốt hơn là chạy kiểm tra ngay trước khi đẩy mã của bạn vào kho lưu trữ và đặc biệt là trong CI.
  5. Nếu mã của bạn rất cũ, xung đột trong phần phụ thuộc của Trình soạn thảo có thể phát sinh. Trong trường hợp như vậy, giải pháp sẽ là cài đặt các công cụ đó trong một thư mục riêng, ví dụ như trong ./ecs/composer.json

Như đã nói và làm xong, chúng ta có thể tiến hành kiểm tra các công cụ

EasyCodingStandard – một công cụ để cai trị tất cả

ECS là một trình phân tích mã tĩnh được tạo bởi Tomas Votruba và những người đóng góp. Nó có thể tự động sửa hầu hết các lỗi mã của bạn. Nó chứa các quy tắc từ PHP Code Fixer, Code Sniffer, Slevomat và Simplify. Ngoài ra, nó đơn giản hóa rất nhiều cấu hình của chúng. sao mà tin được? .

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Bên dưới, có một cấu hình ECS mẫu mà tôi sử dụng (với một số tùy chỉnh) trong hầu hết các dự án của mình

Được rồi, nhưng bạn có thể hỏi "làm thế nào để sử dụng nó?"

  1. Lưu mã trên vào thư mục dự án chính (trong tệp ecs.yaml)
  2. Cài đặt ECS. composer require --dev symplify/easy-coding-standard
  3. Chạy trình kiểm tra. vendor/bin/ecs check src (lệnh thực thi chạy khô theo mặc định – có nghĩa là nó kiểm tra mã, nhưng sẽ không thay đổi mã)

    Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

    người kiểm tra
  4. Kiểm tra các thay đổi được đề xuất. Nếu bất kỳ quy tắc nào trong số chúng không đáp ứng yêu cầu của bạn, hãy xóa các quy tắc tương ứng khỏi tệp cấu hình hoặc thêm chúng vào phần “bỏ qua”. Bạn cũng có thể thêm ngoại lệ cho các tệp cụ thể tại đây và quay lại bước 3.  
  5. Sau khi đạt được kết quả ưng ý, hãy để chương trình sửa mã của bạn. Vì mục đích này, hãy thực hiện các thay đổi rồi thực hiện lệnh từ bước 3. Lần này, bạn nên làm điều đó xung quanh với đối số "sửa chữa". vendor/bin/ecs check src --fix

    Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

    Các lỗi được sửa thủ công
  6. Không phải mọi thứ đều có thể được sửa chữa tự động. Nếu đầu ra còn sót lại thứ gì đó, hãy sửa đổi mã theo cách thủ công cho đến khi đầu ra của lệnh chuyển sang màu xanh lục

    Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

    Không tìm thấy lỗi
  7. Thực hiện kiểm tra và/hoặc nhấp qua ứng dụng để kiểm tra xem nó có còn hoạt động bình thường không
  8. Nếu xảy ra lỗi trong quá trình này, bạn có thể hoàn nguyên trạng thái mã về cam kết mà bạn đã thực hiện trước lệnh sửa lỗi
  9. Xong. 🙂

Làm điều này có thể cải thiện đáng kể chất lượng mã của bạn. Nhưng này, chúng ta vẫn chưa xong. Hãy xem bạn có thể cải thiện điều gì khác bằng cách sử dụng một số công cụ khác

PHPStan

PHPStan là một công cụ hữu ích khác. Cấu hình của nó được đơn giản hóa đến mức tối thiểu – bạn chọn một trong các cấp độ được xác định trước. Ngoài ra, bạn có thể mở rộng khả năng của nó bằng cách sử dụng một trong nhiều tiện ích mở rộng. Nhược điểm là máy phân tích này không có chức năng sửa mã tự động. Đây là một cấu hình mẫu mực.

Một lần nữa, hãy trả lời câu hỏi. Làm thế nào để sử dụng nó?

  1. Lưu mã trên vào thư mục chính của dự án, trong tệp phpstan.neon
  2. Cài đặt PHPStan. composer require --dev phpstan/phpstan
  3. khởi động nó. vendor/bin/phpstan analyse src

    Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

    Tìm thấy lỗi
  4. Sửa lỗi trình bày trong đầu ra

    Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

    Không tìm thấy lỗi
  5. Thực hiện kiểm tra và/hoặc nhấp qua ứng dụng để kiểm tra xem ứng dụng có còn hoạt động bình thường không
  6. Bây giờ, bạn có thể tăng cấp độ trong cấu hình và sau đó quay lại bước 3, cho đến khi bạn đạt được hiệu quả ưng ý. Theo kinh nghiệm của tôi, hầu hết các dự án sẽ dừng lại ở cấp độ 3 đến 5
  7. Xong. 🙂

thánh vịnh

Công cụ cuối cùng mà tôi sử dụng hàng ngày được gọi là Psalm. Nó được thực hiện bởi Vimeo. Thật không may, giống như PHPStan, mã của bạn sẽ không được sửa tự động. Việc cấu hình được thực hiện thông qua một tệp XML và cung cấp rất nhiều khả năng. Khuyến nghị của tôi là bắt đầu với tất cả các quy tắc ở mức tối thiểu là “cảnh báo”, dần dần loại bỏ chúng. Cấu hình cuối cùng sẽ như thế này

Làm thế nào để sử dụng nó?

  1. Lưu mã trên vào thư mục chính của dự án, trong tệp psalm.xml
  2. Cài đặt bài thánh ca. composer require --dev vimeo/psalm
  3. khởi động nó. ecs.yaml0

    Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

    Lỗi tìm kiếm
  4. Nếu có quá nhiều lỗi hoặc bạn không đồng ý với bất kỳ lỗi nào trong số đó, bạn nên loại trừ các quy tắc và tệp mà bạn sẽ không sửa
  5. Sửa mã của bạn cho phù hợp với các quy tắc còn lại

    Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

    Không tìm thấy lỗi
  6. Thực hiện kiểm tra và/hoặc nhấp qua ứng dụng để kiểm tra xem nó có còn hoạt động bình thường không
  7. Xong. 🙂

Nếu bạn muốn xem một số ví dụ thực tế về các công cụ nói trên, tôi khuyên bạn nên truy cập ví dụ hoạt động của chúng tôi về những công cụ phân tích đó trên kho lưu trữ GitHub

Điều gì tiếp theo để phân tích mã tĩnh PHP?

Bây giờ, mã trông sạch hơn nhiều. Với công cụ phân tích tĩnh PHP, bạn có thể

  • cải thiện chất lượng mã bằng cách làm cho nó dễ đọc và hiệu quả hơn,
  • phát hiện và giải quyết tất cả các loại vấn đề, bao gồm các lỗ hổng bảo mật

Nhưng chờ đã, bộ não của bạn không hài lòng với kiến ​​​​thức này sao? . “Tại sao có quá nhiều công cụ phân tích mã tĩnh PHP này?

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Nếu vậy, thì tôi muốn giới thiệu cho bạn một số bài viết kỹ thuật chi tiết hơn trên blog xuất sắc của Tomas Votruba, người tạo ra ECS đã nói ở trên, hy vọng sẽ trả lời được những câu hỏi đó

  • Tổng quan và lịch sử của một số trình kiểm tra mã
  • Hai cách tiếp cận khác nhau để phân tích mã. Cây cú pháp trừu tượng so với dựa trên mã thông báo
  • Làm thế nào để phân tích và cải thiện hiệu quả các dự án cũ?
  • Tiêu chuẩn mã hóa Kata

Bạn không muốn đọc chúng nhưng mã PHP của bạn vẫn cần phân tích mã tĩnh thích hợp?

Tại The Software House, chúng tôi có một nhóm các nhà phát triển PHP rất tận tâm, những người sẽ sẵn lòng kiểm soát kiểu mã của bạn. Để nhận được tư vấn miễn phí, tất cả những gì bạn cần làm là điền vào mẫu liên hệ

Liên hệ chúng tôi

Nhà cung cấp/bin/phpstan không có tệp hoặc thư mục như vậy

Jarosław Jakubowski

Nhà phát triển PHP cao cấp

Nhà phát triển phần mềm với hơn 12 năm kinh nghiệm (trong đó có 7 năm toàn thời gian) trong việc tạo các ứng dụng PHP. Người đam mê mã sạch và thử nghiệm. Cộng tác viên nguồn mở. Đam mê núi rừng. người đi bộ đường dài, người leo núi, người du lịch trượt tuyết, người leo núi, nhà thám hiểm hang động, thành viên của Hiệp hội leo núi Ba Lan (PZA)