Невостребованный файл, содержащий chdir (), вызывающий ошибку - PullRequest
0 голосов
/ 02 декабря 2011

В моем PHP-проекте PDF генерируется при вызове расширенного файла fpdf, а XLS генерируется зависимым от библиотеки phpxls файлом.

Я вызвал chdir("libs/phpxls"); внутри файла генератора XLS. Когда вызывается файл генератора PDF (который не имеет ничего общего с генератором xls или его библиотеками), появляется ошибка из-за chdir("libs/phpxls");, вызываемого в генераторе XLS. Я нигде не вызывал файл генератора xls.

Кто-нибудь знает, что происходит ..?

Функция getcwd(); возвращает текущий каталог как /libs/phpxls, как если бы он вызывал генератор XLS, даже если мой код или какие-либо из библиотек не вызывают его прямо или косвенно.

Все ли файлы соответствуют chdir(), include(), require() функциям, вызываемым интерпретатором PHP сам по себе ..?

Проблема решается после того, как я изменил базовый каталог на настоящий, используя chdir('../..');

Но я понятия не имею, почему файл даже вызывается, когда он не должен быть ..?

EDIT

Я использовал 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 в моем проекте, ошибка все равно появляется.

Но как только я вернулся в родительский каталог через chdir(../..) в генераторе XLS, я смог без проблем вызвать генератор pdf.

Здесь на самом деле моя проблема решается таким образом. Но все же я не понимаю, почему невостребованный файл меняет каталог ...?

Примеры кода *

класс 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();.....

В моем проекте внешний интерфейс гибкий. когда нажата кнопка 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);
    }............

Этот файл вызывается непосредственно при нажатии кнопки генерации xls из пользовательского интерфейса.

в нем больше ничего нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...