Запуск из-под PHP COM-приложения.

SaNeK

Новичок
Запуск из-под PHP COM-приложения.

Что имеется:
Windows 2003 Server SP2 (связь с ОСью и сервером через RDP)
Apache 2.0.55
PHP 5.1.2 как модуль (safe_mode = off, reg_global=off, set_time_limit = 0)
MapServer на PHP
Surfer 8

+ самописная программа, которая юзает COM-объект серфера и создает географические изображения. Программа консольная, параметры работы принимает прямо из консоли в качестве argv&argc. Прога зовется getmap.exe. Из консоли (cmd) работает.

Проблема:
скрипт:
PHP:
<?php
$param = array();
$param['param1'] = "value";
$param['param2'] = "value";
$param['param3'] = "value";
$param['param4'] = "value";

echo system("getmap.exe " . join(" ", $param));
?>
Скрипт работает, прога запускается. Но тут же вываливается. В журнале системы вот что:
Type: error
Source: Application Error
Event ID: 1000
Category: 100
Message: "Faulting application getmap.exe, version 0.0.0.0, faulting module kernel32.dll, version 5.2.3790.4062, fault address 0x0000bee7."
0000: 41 70 70 6c 69 63 61 74 Applicat
0008: 69 6f 6e 20 46 61 69 6c ion Fail
0010: 75 72 65 20 20 67 65 74 ure get
0018: 6d 61 70 2e 65 78 65 20 map.exe
0020: 30 2e 30 2e 30 2e 30 20 0.0.0.0
0028: 69 6e 20 6b 65 72 6e 65 in kerne
0030: 6c 33 32 2e 64 6c 6c 20 l32.dll
0038: 35 2e 32 2e 33 37 39 30 5.2.3790
0040: 2e 34 30 36 32 20 61 74 .4062 at
0048: 20 6f 66 66 73 65 74 20 offset
0050: 30 30 30 30 62 65 65 37 0000bee7
На локальной машине под WinXP все работает прекрасно.
-------------------------
Резюме. Я понимаю, что эта ошибка может не иметь к PHP никакого отношения. Но главный вопрос: почему работает из-под консоли, но не пашет из-под system()?

Опережая возможные вопросы: передаваемые параметры для проги проверил, правильный путь к программе проверил (да и запускается же она), антивирусы вырублены. Поиск по KB майкрософта ничего не дал.
Куда копать?

P.S. Запостил в надежде, что кто-то уже сталкивался с подобным на другом софте. Хотя, конечно, под подозрением в первую очередь сама COM-прога.
 

slach

Новичок
тут вариантов миллион
ну например бывает так что под Одной OS распределение памяти между DLL одно, а под другой другое...

из под cmd работает в одном окружении а через system в другом

попробуй
PHP:
echo system(getenv('ComSpec').' /c c:\полный_путь\getmap.exe '. join(' ', $param));
 

SaNeK

Новичок
slach
пробовал уже - безрезультатно

-~{}~ 30.11.07 17:16:

Попробую сейчас батник сделать и скормить system() батник.
 

slach

Новичок
из под какой учетной записи запускается PHP ???
из под какой обычный cmd.exe ?
 

SaNeK

Новичок
PHP - модуль Апача. Апач запускался под Local System. Я cmd запускал из-под своего аккаунта.

Кстати, прошу прощения, но я упустил серьезную детать: скрипт запускает программу без параметров вообще. В этом случае в консоль вываливается --help. Не работает только с передаваемыми параметрами.

ЗЫ. В кавычки параметры брать пробовал.
 
Сверху