Phục vụ nghệ nhân Php không thể mở tệp đầu vào: nghệ nhân
Khi tôi chạy ứng dụng laravel của mình, tôi gặp lỗi Hình ảnh docker của Laravel Không thể mở tệp đầu vào. /var/www/html/nghệ nhân. Cuối cùng tôi đã tìm ra nguyên nhân cốt lõi của vấn đề, hãy để tôi chia sẻ nó với bạn Show
Tôi đã tạo ứng dụng của mình trong Laravel sail nhưng hiện tại tôi đang làm việc để làm cho ứng dụng chạy bên trong bộ chứa docker. Ứng dụng của tôi chạy tốt Tôi sử dụng docker-compose run nhưng trong quá trình xây dựng docker để tạo hình ảnh, tôi gặp lỗi Vì tôi chạy nó trong một container docker, chúng tôi sẽ chẩn đoán bởi Laravel đang phàn nàn TL;DRCâu trả lời ngắn gọn là mã nguồn Laravel của bạn không thể truy cập được bởi tiến trình đang cố chạy nó Trong trường hợp của tôi, tôi chạy Laravel trong bộ chứa docker bằng cách sử dụng 1Để bắt đầu, tôi chạy ứng dụng bằng lệnh 2 (xem bên dưới cấu hình mà tôi có). Nó hoạt động tốt vì tôi có một tập đĩa được liên kết với mã nguồn (xem dòng đơn giản bên dưới). Điều này có nghĩa là quy trình 3 có quyền truy cập vào mã nguồn, vì vậy nó đã hoạt độngKhi tôi chạy quy trình xây dựng để tạo hình ảnh docker của mình 4, không có liên kết nào đến mã nguồn (xem đường chấm chấm bên dưới). Vì vậy, quá trình xây dựng không thành công với lỗi đó
tùy thuộc vào thiết lập của bạn, bạn có thể nhận được thông báo lỗi thay thế này
Đây là một lược đồ thiết lập của tôi
thiết lập của tôiThiết lập của tôi khá giống với thiết lập laravel mà tôi đã làm với docker trong bài viết này. Ý tưởng là gói ứng dụng của bạn bên trong một hình ảnh docker, sau đó sử dụng hình ảnh đó trong các dịch vụ docker khác để xây dựng thứ gì đó lớn hơn Kịch bản để bắt đầu vùng chứaTôi đã tạo tập lệnh này để chạy các bước cần thiết để khởi động ứng dụng Nó xử lý các vấn đề về quyền và sau đó sử dụng ________ 01 để khởi động ứng dụng Ở giai đoạn này, mã nguồn của ứng dụng được giả định là trong hình ảnh vùng chứa 6
Tệp cấu hình 1 bên dưới 1Dockerfile để xây dựng hình ảnhĐây là Dockerfile tôi đã sử dụng để xây dựng hình ảnh. Bạn có thể thấy rằng không có hướng dẫn sao chép mã nguồn bên trong hình ảnh vùng chứa Nhưng ở cuối tệp có lệnh ENTRYTPOINT yêu cầu vùng chứa chạy tập lệnh mà chúng ta đã tạo ở trên 2Thiết lập docker-composeĐây là ngăn xếp docker-compose của tôi. Nó được thiết kế để đóng gói mọi thứ lại với nhau. Ứng dụng Laravel được xây dựng từ 8 mà chúng ta đã tạo trước đâyNó ánh xạ mã nguồn từ thư mục hiện tại (nơi đặt 9) 5Vấn đềTại sao nó không thành công trong quá trình xây dựng dockerNguyên nhân gốc rễ liên quan đến sự hiện diện của mã nguồn Lỗi bên dưới được đưa ra khi
Tại sao nó hoạt động trong thời gianKhi tôi chạy ứng dụng bằng lệnh 2. Nó hoạt động tốt vì tôi có một tập được liên kết với mã nguồn 9Điều này có nghĩa là quy trình 3 có quyền truy cập vào mã nguồn, vì vậy nó đã hoạt độngGiải phápĐể giải quyết vấn đề, bạn cần thêm lệnh COPY vào tệp 8Mã nguồn nằm trong thư mục hiện tại. Hướng dẫn sẽ sao chép nguồn vào ví dụ 2Đây là Dockerfile hoàn chỉnh 0Phần kết luậnThật tuyệt khi có thể xác định nguyên nhân gốc rễ. Hy vọng bạn thích nó. Hãy cùng chia sẻ suy nghĩ của bạn tại phần bình luận Không thể mở tệp đầu vào thủ công làm thế nào để giải quyết vấn đề này?Lỗi này xảy ra do bạn chưa cài đặt trình soạn thảo trong dự án của mình. Để giải quyết vấn đề này, chỉ cần thay đổi quyền của tệp thủ công .
Không thể mở tệp đầu vào phục vụ Laravel?Lỗi này chủ yếu xảy ra khi người dùng cố mở dự án Laravel bên ngoài thư mục dự án . Laravel chỉ có thể thực thi dự án nếu chúng ta mở nó bên trong thư mục dự án. Đó là lỗi nói 'không thể mở tệp đầu vào'.
Làm cách nào tôi có thể chạy Laravel 9 mà không cần phục vụ thủ công php?và bạn có thể chạy laravel mà không cần thủ công. Nếu bạn đổi tên máy chủ. php và sao chép. . Thay đổi tên tệp. thay đổi phục vụ. php để lập chỉ mục. . Di chuyển. tập tin htaccess Mang ". . Khởi động lại máy chủ cục bộ của bạn. Bạn chỉ cần 1 cú nhấp chuột. . Vui thích Làm cách nào để kiểm tra phiên bản của Laravel?Mọi bản phát hành Laravel đều có phiên bản của khung là hằng số trong Ứng dụng. tập tin php. Bạn có thể truy cập hằng số này thông qua trình trợ giúp app() . Nếu bạn không muốn tạo /test route để lấy phiên bản, bạn có thể sử dụng php artisan tinker để truy cập REPL của tinker và chạy nó từ đó. |