在我的PHP项目中,在调用fpdf扩展文件时生成PDF,而xLS由phpxls库相关文件生成。
我在XLS生成器文件中调用了chdir("libs/phpxls");
。调用PDF生成器文件时(与xls生成器或其libs无关),由于XLS生成器中调用了chdir("libs/phpxls");
,因此显示错误。我没有在任何地方调用xls生成器文件。
有谁知道发生了什么......?
getcwd();
函数将当前目录返回到/libs/phpxls
内部,就好像它调用XLS生成器一样,即使我的代码或任何库没有直接或间接调用它。
PHP解释器本身调用的所有文件是chdir()
,include()
,require()
函数。?
使用chdir('../..');
但是我不知道为什么文件甚至被调用时它的意思不是......?
修改
我用过chdir(APP_REAL_PATH.'libs / phpxls');在XLS生成器中。
当调用pdf生成器文件时,显示错误。
Warning: getimagesize(images/rupee-symbol.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:"location"\services\libs\fpdf\fpdf.php on line 1213
FPDF error: Missing or incorrect image file: images/rupee-symbol.jpg
但是在这两个文件或它们各自的库之后没有直接或间接的关系。
即使我在项目中注释掉了对XLS生成器的所有调用,仍然会出现错误。
但是一旦我通过XLS生成器中的chdir(../..)
回到父目录,我就可以毫无问题地调用pdf生成器。
实际上我的问题通过这样解决了。但我仍然不明白为什么一个未调用的文件正在改变目录......?
代码示例 *
class PdfInvoiceReport扩展FPDF {
var $companyName;
var $companyAddress;
var $serviceTaxNo;
var $storedPanNo;
var $invNotes;
var $objGeneral;
var $roundedNetAmt;
function __construct($invId){
parent::__construct();
//$this->cust = $cust;
// $this->type = $type;
echo getcwd();
$this->AliasNbPages();
$this->AddPage();.....
在我的项目中,前端是flex。单击pdf按钮时,将直接调用包含上述类的文件。所以这是我应该检查目录的地方,我在构造函数中执行它。它返回xls库的目录。
现在xls生成器文件代码部分
<?php
//documentation on the spreadsheet package is at:
//http://pear.php.net/manual/en/package.fileformats.spreadsheet-excel-writer.php
include_once('init\init.php');
include_once(APP_REAL_PATH.'ReportsService.php');
include_once(APP_REAL_PATH.'classes\general_class.php');
include_once(APP_REAL_PATH.'classes\customer_class.php');
chdir(APP_REAL_PATH.'libs/phpxls');
require_once 'Writer.php';
//chdir('../..');
class XlsGenericReport {
var $objExcelWriter;
function __construct($allArray){
$sheet1 = $allArray['headerNames'];
$sheet2 = $allArray['data'];
$this->prepareXls($sheet1,$sheet2);
}............
从UI中单击xls生成按钮时,将直接调用此文件。
其中没有更多内容。