Код для генерации отчета Crystal Reports прекрасно работает в CLI, но «Имя источника данных не найдено» при доступе из браузера - PullRequest
6 голосов
/ 09 мая 2011

Я пытаюсь сгенерировать отчет из PHP, используя Crystal Reports. Код выглядит правильно:

<?php
set_time_limit(0);
if(isset($_GET['id']))
{
$id = $_GET['id'];
} else {
die('Please specify an ID');
}

$path = "c:\\wamp\\www\\billing\\reports";
$file = $chemin."\\bill_".$id.".pdf";
$app_obj = new COM("CrystalRuntime.Application") or Die ("Did not open");
$report= $path."\\bill.rpt";

$rpt_obj= $app_obj->OpenReport($report,1);
$app_obj->LogOnServer("p2ssql.dll","host","bdd","userbd","passwordbd");
$rpt_obj->EnableParameterPrompting = FALSE;
$rpt_obj->RecordSelectionFormula = "{F_DOCLIGNE.DO_Piece}='$id'";

$rpt_obj->ExportOptions->DiskFileName =  $file;
$rpt_obj->ExportOptions->PDFExportAllPages = true;
$rpt_obj->ExportOptions->DestinationType = 1;
$rpt_obj->ExportOptions->FormatType = 31; 
$rpt_obj->Export(false);

header("Content-Type: application/pdf");
readfile($file);
?>

Если я запускаю скрипт из командной строки, он работает нормально, и яэкспортируйте и проанализируйте PDF-файл в консоли.

Но с точки зрения браузера история другая. Если вы получаете запрос через Apache, я получаю следующее исключение:

com_exception: Source: Crystal Reports ActiveX Designer
Details : IM002:[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified in C:\wamp\www\facture\report.php on line 25

В отчете соединение с базой данных осуществляется через ODBC, я не мог его использовать, так как любой другой драйвер, помеченный ODBC, отказывался работать.


Ответы [ 2 ]

1 голос
/ 13 октября 2012

Возможно, вам придется установить некоторые переменные среды. Ниже приведено то, что я должен был установить для использования другого драйвера ODBC (примечание: в OS X).

<?php
    putenv("ODBCINSTINI=/path/to/odbcinst.ini");
    putenv("ODBCINI=/path/to/odbc.ini");
?>
0 голосов
/ 17 мая 2011

Я вижу, вы используете Wamp. Это поведение очень вероятно связано с пользователем, под которым работает веб-сервер (Apache).

Когда вы запускаете PHP из CLI, PHP.exe наследует ваш профиль пользователя (с точки зрения прав доступа к базе данных / сети / файловой системе); с другой стороны, как правило, Apache (и IIS тоже) работают с другими непривилегированными учетными данными, чтобы не допустить повреждения и эксплуатации сервера хакерами.

В Apache вы можете изменить это поведение, изменив файл конфигурации Apache httpd.conf (в вашем случае он может находиться в C:\wamp\apache\conf), изменив директивы конфигурации User и / или Group.

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