This is an Apache / Perl problem that I am having.
I am using a CPAN Module in my perl CGI application. It is Spreadsheet::ParseExcel
I have installed the cpan module with tar.gz files.
I have installed the dependencies.
However, I did do so as a non-root user. The library that contains these files is under a user folder, /home/user/lib
Now, I have successfully configured Apache2 on this box. The html directory is /var/www/html and the cgi folder is /var/www/html/cgi-bin. I have verified they work because all of the scripts in that folder that do not require the special modules work in my firefox browser, ie. hello world, data dumps, simple forms.
However, when I try to run the scripts that use "Spreadsheet::ParseExcel", I get the error that the module cannot be found in @INC. However, I have a "use lib" statement at the beginning of the script that adds the library.
The scripts can be run in PUTTY without problem. Only when running the script from the browser am I getting the issue.
This web application was written on another box and works fine on that box. Because I developped there of course. I put Apache2 on my personal Ubuntu machine, and installed the web application and modules here, and it works on my local box.
I have set "chmod -R a+rx" to the user library folder, so I would think that Apache has access to the folder, unless the settings of the parent directory is blocking it? I don't have to run that on the /home/user folder, or worse, the /home folder, do I?
Any insights on the issue?
Thank you all for your time!
The Apache user cannot access /home/user/lib if it does not have access to /home/user, even if the permissions on /home/user/lib would allow it to access it.
For example, if you own a file in /root you still cannot access it if you don't have access to /root.
Two thoughts here:
use lib
?If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With