В настоящее время я пытаюсь скомпилировать работающий проект PHP в .Net DLL. В моем решении Phalanger / PHP используются PDO и SQLite. Когда я доберусь до части, которая создает мой объект PDO:
$this->db = new \PDO('sqlite:'.$fileName, null, null, [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
Я получаю простое исключение «Драйвер не найден».
Я не могу найти много полезной информации, поэтому надеюсь, что у кого-то есть опыт.
В моих ссылках на проект я имею:
У меня также есть App.config с:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="phpNet" type="PHP.Core.ConfigurationSectionHandler, PhpNetCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0a8e8c4c76728c71" />
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Phalanger"/>
</assemblyBinding>
</runtime>
<phpNet>
<classLibrary>
<add assembly="PhpNetSQLite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2771987119c16a03" section="sqlite"/>
<add assembly="PhpNetPDO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2771987119c16a03" section="pdo"/>
<add assembly="PhpNetPDOSQLite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2771987119c16a03" section="pdosqlite"/>
</classLibrary>
</phpNet>
</configuration>
Хотя App.config кажется совершенно неактуальным.
В веб-приложении (насколько я могу судить) мне нужен PHP.ini, в котором определен мой sqlite dsn. Есть ли эквивалентный файл для Phalanger, особенно когда вы создаете dll? Как мне указать мой проект на драйвер SQLite?
Я также попытался создать систему odbc dsn под названием sqlite, но безуспешно.
Может кто-нибудь дать мне совет или указать хороший урок?
Ух ты, ошибка новичка! У меня была информация о конфигурации Phalanger в App.config в исходном проекте, который компилировался в dll, но не в App.config в проекте, который вызывал dll. Глупо, глупо, глупо!
Других решений пока нет …