包含chdir()的未调用文件导致错误

时间:2011-12-02 11:27:15

标签: file-io php

在我的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生成按钮时,将直接调用此文件。

其中没有更多内容。

0 个答案:

没有答案