Đây là một vấn đề về Apache/Perl mà tôi đang gặp phải.Perl CGI Scripts không thể tìm thấy các mô-đun trong thư viện
Tôi đang sử dụng Mô-đun CPAN trong ứng dụng CGI perl của mình. Đó là bảng tính :: ParseExcel
Tôi đã cài đặt mô-đun cpan với các tệp tar.gz.
Tôi đã cài đặt các phụ thuộc.
Tuy nhiên, tôi đã làm như vậy với tư cách là người dùng không phải root. Thư viện chứa các tệp này nằm trong thư mục người dùng,/home/user/lib
Bây giờ, tôi đã định cấu hình thành công Apache2 trên hộp này. Thư mục html là/var/www/html và thư mục cgi là/var/www/html/cgi-bin. Tôi đã xác minh họ làm việc vì tất cả các kịch bản trong thư mục đó không yêu cầu các mô-đun đặc biệt làm việc trong trình duyệt firefox của tôi, tức là. xin chào thế giới, bãi dữ liệu, biểu mẫu đơn giản.
Tuy nhiên, khi tôi cố gắng chạy tập lệnh sử dụng "Bảng tính :: ParseExcel", tôi gặp lỗi khi không tìm thấy mô-đun trong @INC. Tuy nhiên, tôi có một tuyên bố "sử dụng lib" ở đầu tập lệnh để thêm thư viện.
Các tập lệnh có thể chạy trong PUTTY mà không gặp sự cố. Chỉ khi chạy kịch bản từ trình duyệt, tôi mới gặp phải vấn đề.
Ứng dụng web này được viết trên một hộp khác và hoạt động tốt trên hộp đó. Bởi vì tôi phát triển ở đó tất nhiên. Tôi đặt Apache2 trên máy Ubuntu cá nhân của mình và cài đặt ứng dụng web cũng như các mô-đun ở đây và nó hoạt động trên hộp địa phương của tôi.
Tôi đã đặt "chmod -R a + rx" thành thư mục thư viện người dùng, vì vậy tôi nghĩ Apache có quyền truy cập vào thư mục, trừ khi cài đặt của thư mục mẹ đang chặn thư mục đó? Tôi không phải chạy nó trên thư mục/home/user, hoặc tệ hơn, thư mục/home, phải không?
Mọi thông tin chi tiết về vấn đề này?
Cảm ơn tất cả vì đã dành thời gian của bạn!
Thư mục đầu tiên được liệt kê trong lỗi @INC, là thư mục thư viện được đề cập. Tôi không chắc chắn người dùng apache đang sử dụng để cố gắng truy cập các tệp 'không ai' hoặc 'người dùng www', nhưng tôi đang hướng tới vấn đề quyền. Có, toàn bộ thư viện có quyền r-x cho chủ sở hữu, nhóm và người dùng. – bleutyler
Không chỉ là thư mục của mô-đun. Ví dụ, nếu module là /home/tydel/lib/perl/Net/BoogieTime.pm, mỗi thư mục từ/up sẽ yêu cầu o + rx ở mức tối thiểu.Điều này bao gồm/home,/home/tydel,/home/tydel/lib và/home/tydel/lib/perl,/home/tydel/lib/perl/Net và cuối cùng/home/tydel/lib/perl/Net /BoogieTime.pm sẽ cần o + r. Hy vọng rằng sẽ giúp. –