我有一个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\
在我的路线之一上:importer / run
我有:
$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
答案 0 :(得分:0)
感谢miken32,对我有用的是:
<?php
$commandString = 'start /b c:\\programToRun.exe -attachment "c:\\temp\file1.txt"';
pclose(popen($commandString, 'r'));
?>