PHP exec (MSAccess.exe MS_access_file.accdb) возможно? - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь открыть базу данных MS Access с веб-страницы. Я не пытаюсь подключиться к базе данных, просто чтобы она работала. Когда я запускаю приведенный ниже код, я вижу, что MS Access открыт, но база данных ничего не выводит

Я не знаю достаточно о php, чтобы знать, возможно ли это или нет.

Это тестовая интрасеть, в которой для accdb установлены полные права доступа IIS_IUSRS. Цель базы данных - распечатать формы на принтере, свисающем с сервера, чтобы избежать ошибок персонала.

Существует макрос autoexec, который выполняет модуль VBA в базе данных. Он считывает значение из текстового файла, поэтому accdb знает, сколько копий нужно распечатать.

Я не получаю никакой обратной связи от кода и не нахожу ничего в средстве просмотра событий Windows.

Можно ли открыть базу данных на сервере? Я могу запустить его на сервере, запустив accdb, но exec (accdb), shell_exec не работают.

Примечание: домен, на который они собираются, указан в localhost на сервере и на компьютерах, которые пытаются с ним работать. Домены не являются реальными доменами в Интернете. Спасибо!

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>  
    <br><br><center>
    <h3>Enter the number of copies you would like to print :</h3>
    <form action="printit.php" method="POST">
    <input name="field1" type="text" /><br><br>
    <input type="submit" name="submit" value="Print">
</form>
    </center>
<?php

    if(isset($_POST['field1'])) {
    $data = $_POST['field1'];           
    $ret = file_put_contents('d:\\OneDrive\\Intranet\\www.foo-intranet.com\\db\\NumberofCopies.txt', $data, LOCK_EX);   

    if($ret === false) {
        die('There was an error here.');
    }
    else {
        echo "$ret bytes written to file";
    }

    }

  $backtome = exec('"C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\MSAccess.exe" D:\\OneDrive\\Intranet\\www.foo-intranet.com\\db\\Reports_printer2.accdb');
    if(isnull($backtome)) {
        echo 'There was a null in exec command.';
    }
    else{
        echo '$backtome received from exec';
    }

    ?>  

    <br>
    <br>

</body>
</html>

При ручном запуске accdb он отлично печатается на принтере

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