php - 从 php Web 应用程序(Windows)执行节点脚本
问题描述
我有一个 php Web 应用程序,并且在其中一条路线上我尝试执行节点脚本。
节点脚本位置:C:\Users\meusr\Workspace\www\myproject\directImport.js
我已经配置了我的 package.json,以便 npm start 执行上面的脚本。
php (laravel) 应用程序的可执行 index.php 位于:C:\Users\meusr\Workspace\www\myPHPproject\public\
在我的一条路线上:进口商/运行
我有:
$commandToRun = "npm start --prefix ". env('IMPORTER_PATH'). " /dev/null 2>&1";
在我的环境中配置了 IMPORTER_PATH,如: IMPORTER_PATH =C:\Users\meusr\Workspace\www\myproject\
当我尝试执行命令时exec
exec($commandToRun, $output);
页面不断加载,没有输出,没有错误,也没有结束。
该脚本没有问题,并且在 Windows 系统的命令行上运行相同的命令有效:
npm start --prefix C:\Users\meusr\Workspace\www\myproject\
按预期输出。
我认为首先是权限问题(应该抛出错误,但我仍然尝试运行另一个命令)
exec('npm -v', $output);
输出我的 npm 版本。
同样,我尝试简单地使用node directImport.js
它也不起作用。
然后尝试将目录更改为节点文件所在的位置并再次运行该命令。
exec(cd C:\Users\meusr\Workspace\www\myproject\ && dir /dev/null 2>&1) // this works, but:
exec(cd C:\Users\meusr\Workspace\www\myproject\ && node directImport.js /dev/null 2>&1) // this didn't work
解决方案
感谢 miken32,对我有用的是:
<?php
$commandString = 'start /b c:\\programToRun.exe -attachment "c:\\temp\file1.txt"';
pclose(popen($commandString, 'r'));
?>
推荐阅读
- node.js - 门罗币 nodejs 文档
- terraform - 如何使用 terraform 在多个区域进行设置?
- javascript - 组件加载到 HTML 后获取宽度和高度的问题
- c++ - *在哪里*替换 Windows 中的 ```sys/time.h``` 头文件依赖项?
- powershell - PowerShell 排序
- pandas - 有没有办法在不使用 Pandas 模块的情况下将 Teradata Python 模块结果导出到 CSV?
- excel - excel VBA效率XMLHTTP60
- python - 如何修改给定列中的字符串值并在熊猫数据框中用它创建不同的列
- r - 将两列从数据帧转换为向量 R
- python - 使用kafka作为框架搜索信息