this->getMined.start("php", QStringList() << "get_cexio_BTC.php");
this->getMined.waitForFinished();
QByteArray output = getMined.readAll();
输出:“无法打开输入文件:get_cexio_BTC.php \ n”
项目文件和 get_cexio_BTC.php 位于同一文件夹中。我尝试将完整路径和第一行更改为this->getMined.start("php get_cexio_BTC.php");
,但它没有帮助。
答案 0 :(得分:1)
您可以使用QNetworkAccessManager访问localhost上的页面以触发包含的PHP脚本。
例如,如果你的htdocs目录中有以下php页面:test.php
// test.php
echo("hello world");
您可以访问自己的网页:http://localhost/test.php
QUrl url("http://localhost/test.php");
QNetworkAccessManager nam;
QNetworkReply* reply = nam.get(QNetworkRequest(url));
答案 1 :(得分:1)
因此,如果在路径中找不到php
,或者没有加载到QProcess
正在使用的环境变量中,则可能会出现类似的错误。
尝试打印出环境变量:
qDebug() << "Process Environment" << myProcess.getProcessEnvironment().toStringList();
如果在PATH
变量下,它没有提及php.exe
的位置,则会失败。
您可能需要指定php.exe
而不仅仅是php
。如果找到了正确的,那么当它没有运行任何输入文件时,你应该能够看到php命令的用法语句。
http://www.php.net/manual/en/features.commandline.options.php
如果这不是问题,那么请确保您所在的工作目录中。
system("dir");
或
qDebug() << "current path" << QDir::currentPath();
您可以在代码中更改当前工作目录,或者为特定流程指定它,或者您可以从Qt的项目设置&gt;更改它。运行&gt;工作目录。
如果您还没有,请确保在QProcess
实例未执行您想要的操作时检查/打印出错误字符串。
qDebug() << "error string?" << myProcess.errorString();
并确保您知道在适当的地方使用正斜杠和引号。如果您有一个不带引号的命令行参数/文件名,它可能会在您的路径中看到空格作为另一个要处理的选项。
最后,如果您使用的是Windows 8并且正在访问网络驱动器上的某些内容,则必须运行net use命令才能从命令行访问这些路径,即使它们已映射并在Windows资源管理器中工作也是如此
希望有所帮助。