В моем 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 из пользовательского интерфейса.
в нем больше ничего нет.