在Windows Server上使用PHP运行Python脚本

时间:2019-05-01 22:52:52

标签: php python batch-file windows-server-2012-r2

解决方案:我的Python文件崩溃了,没有任何输出,我能够通过try / except进行诊断,但打印出了错误消息。糟糕!

我有一个Windows 2012R2 IIS服务器,用于显示GitHub存储库中存在的网站。从回购中拉出页面后,我需要使用Python脚本进行处理,到目前为止,作为计划任务每​​天要发生两次。用户希望能够通过单击站点管理面板中的按钮来运行用于更新/处理文件的批处理文件。为此,我创建了一个PHP页面,该页面应该执行计划任务使用的同一批处理文件。我遇到的问题是,当批处理运行时,可以很好地执行git命令,但Python脚本无法运行。

我已经尝试使用exec(),system()和shell_exec()运行批处理文件。我还尝试从运行批处理文件的powershell脚本运行批处理文件。我猜想PHP没有运行Python文件所需的权限。这就是为什么我也尝试通过shell_exec将Admin凭据传递到Powershell的原因。所有这些都失败了。

这里是观看批处理文件的样子

cd C:\inetpub\wwwroot
git fetch --all
git reset --hard master
git pull https://username:password@github.com/user/repo_name
cd C:\inetpub
C:\Python37\python C:\inetpub\api_replace.py

这是我目前在PHP文件中拥有的。

<?php
session_start();
if(!isset($_SESSION["admin"]) || $_SESSION["admin"] !== true){
    header("location: login.php");
    exit;
}

$shellout = shell_exec('powershell C:\inetpub\refresh_pages.bat server_name\Administrator password');
echo $shellout
?>

我还尝试过直接通过exec(),system()和shell_exec()运行Python文件。

git pull的结果显示在页面上,但是Python文件中的所有print语句都没有。必要的文件处理也不会发生。

1 个答案:

答案 0 :(得分:0)

解决方案:我的Python文件崩溃了,没有任何输出,我能够通过try / except进行诊断,但打印出了错误消息。糟糕!