2014-04-21 154 views
1

我试图连接到SnelStart,来自荷兰的会计软件的网关。为此,我通过具有管理员权限的命令提示符调用regsvr32 SnelStartGateWay.dll来注册名为SnelStartGateWay.dll的网关DLL。PHP COM通过CLI工作,但不通过HTTP

下面是一段简单的我的PHP代码:

$gw = new COM('SnelStartGateWay.clsGWaySnelStart'); 
$gw->mtdGWayAdmiOpenen('D:\SnelStart', 'SnelStart Voorbeeldbedrijf'); 

当我运行从附带在同一台电脑上我的XAMPP安装的,那是我安装和注册SnelStart的PHP命令提示符这段代码和网关,没有发生错误,我甚至可以继续通过网关创建新的客户和订单。

然而,当我运行通过HTTP阿帕奇来自同一XAMPP安装完全相同的PHP文件(这是我希望能够达到最终),我收到以下错误:

<br /> 
<b>Fatal error</b>: Uncaught exception 'com_exception' with message '&lt;b&gt;Source:&lt;/b&gt; SnelStart 
mtdGWayAdmiOpenen&lt;br/&gt;&lt;b&gt;Description:&lt;/b&gt; U kunt alleen gebruik maken van SnelStart Gateway als deze module geregistreerd is. Het registreren en gebruiken van SnelStart Gateway is gratis. Vraag een gratis registratie aan via [email protected] (vergeet niet uw naam en adresgegevens te vermelden).' in D:\xampp\htdocs\snelstart.php:7 
Stack trace: 
#0 D:\xampp\htdocs\snelstart.php(7): com-&gt;mtdGWayAdmiOpenen('D:\SnelStart', 'SnelStart Voorb...') 
#1 {main} 
    thrown in <b>D:\xampp\htdocs\snelstart.php</b> on line <b>7</b><br /> 

虽然部分错误信息是荷兰语,它表示您需要注册网关并在软件中启用它。但有趣的是,它通过CLI而没有麻烦。

我需要改变PHP通过HTTP运行的方式是否与通过CLI运行时的权限相同?这可能是地方权利的问题吗?

我也已经尝试禁用我的防火墙和反病毒,但迄今没有任何运气。

在此先感谢。

回答

2

我现在以本地用户帐户运行Windows Apache服务,该帐户也可以访问SnelStart的软件包。如何找出要使用哪个用户帐户,我手动启动了Apache的批处理脚本在其/ bin文件夹中。然后在任务管理器中,我查看了该属于哪个帐户,并确认该脚本在那一刻运行。就像它那样,我将服务更改为使用该本地帐户运行,并执行常见的操作,例如自动启动服务。现在一切运行良好!

0

你必须找出他们的代码获取注册信息的方式。可能PHP PHP安全设置(在php.ini中)比Apache PHP安全设置(通常在另一个php.ini中,与在Apache配置中找到的任何php_admin_values相结合)更加轻松。

它可能是一个open_basedir限制,一个不同的包含路径,不允许URL封装等,或者只是Apache作为另一个用户运行你的代码,与你正在使用的帐户相比, CLI。

+0

一个后续问题:我已经检查并确认CLI和HTTP使用相同的php.ini,我可以停止在我的php.ini中搜索问题还是应该检查那里的任何值? 顺便说一句: safe_mode =关闭 和open_basedir似乎被禁用在我的php.ini,我也可以排除这作为一个可能的原因吗? –

+0

该软件运行在我已输入软件的试用许可证上。但是,如果许可证有任何问题,为什么我可以通过CLI而不是通过HTTP运行脚本? –

+0

“进入软件”是什么意思? “软件”(哪个软件?php代码?某些dll安装程序?)在哪里存储您输入的信息?显然CLI/HTTP最终使用不同的代码路径。你将不得不找出差异。 – mvds