【发布时间】:2018-08-11 07:49:31
【问题描述】:
我遇到的问题是 PHP 能够在 Windows 上正确执行 CMD 命令,但是当我创建要运行的自定义命令时,没有任何效果。
逻辑: 我想“cd”到一个目录中,然后运行 python 脚本,该脚本将从网络上抓取数据并将其保存在 csv 中。 Python 脚本运行良好。
PHP 代码:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
$keyword = $_POST['singleSearchTerm'];
$filename = $_POST['singleFilename'];
$settings = file('settings.txt', FILE_SKIP_EMPTY_LINES);
$conda_path = $settings[0];
$working_env = $settings[1];
$script = "scrape.py";
$url = "https://www.pinterest.com/search/pins/?q=";
$current_dir = getcwd();
// cd into path
$cd_path = "cd " . $conda_path . "&& ";
// activate env
$activate_env = "activate " . $working_env . " && cd ";
// run python script
$pyCommand = $current_dir . "\\ps\\ " . " && python -W ignore ". $script . " --url " . $url . $keyword . " --fname " . $filename;
// full command
$full_command = $cd_path . $activate_env . $pyCommand;
echo $full_command;
// test - works fine
exec("start notepad.exe");
// doesn't do anything
exec($full_command);
// doesnt do anything
system($full_command)
}
生成的命令: 上述PHP加载完成后,生成如下命令:
cd C:\Users\da74\Anaconda3\Scripts && activate scrape && cd C:\MAMP\htdocs\pinscraper\ps\ && python -W ignore scrape.py --url https://www.pinterest.com/search/pins/?q=old --fname dat.csv
问题: 当上面的命令粘贴在 CMD 中时,它就会运行。但是当它在 PHP 中使用 exec() 或 system() 传递时,它不会运行。
已测试: 已测试:
exec("start notepad.exe");
它会打开一个记事本窗口。我不知道有什么问题。是隐藏空间吗?还是别的什么?
感谢任何帮助。 谢谢你
【问题讨论】:
标签: php