Casper Britz Casper Britz - 4 months ago 55
PHP Question

require_once(PHPExcel/Classes/PHPExcel.php): failed to open stream

I am trying to include PHPExcel to a Silverstripe 3 site to export excel sheets. Right now I am just trying to test, but I get this error when trying to do it:


[Warning] require_once(/sitename/mysite/AddOns/PHPExcel/Classes/PHPExcel.php): failed to open stream: No such file or directory


Thing is I know this file exists since I copied it over myself and have rechecked the path over and over. So I decided "well check if the file exists" using this code:

if(!file_exists(Director::baseURL().'mysite/AddOns/PHPExcel/Classes/PHPExcel.php')) {
echo 'sdf';exit;
}


The path is correct (that is where it is saved) according to the error, but- file does not exist. I am also requiring the file in the same way, with no luck

require_once Director::baseURL().'mysite/AddOns/PHPExcel/Classes/PHPExcel.php';


I have tried everything-checking file permissions, referencing parent folders using
../../
, calling it directly like
AddOns/PHPExcel
, moving it to this new AddOns folder (first tried placing the PHPExcel classes on the root and discovered that Silverstripe doesn't read it then :) )

I know I am doing something wrong but for the life of me I cannot see what. Please help

Thanks

Answer

As pointed out Director::baseURL() will return the URL rather than the filepath.

Instead require relative from the file like so:

require_once(dirname(__FILE__) . '/../../AddOns/PHPExcel/Classes/PHPExcel.php');

Be sure to modify to represent your file structure.