php - 运行一个 shell 脚本,然后显示来自 PHP 的文件的内容
问题描述
我有一个 PHP 页面(位于:/var/www/),它必须运行一个 shell 脚本(位于:/home/anas/kaldi/egs/voxforge/s5/new_run.sh)和文本文件(位于: /home/anas/kaldi/egs/voxforge/s5/results/text.txt) 将在脚本运行大约 10 到 15 秒后生成。
我只想单击 PHP 中的按钮并运行脚本,当在相应目录中创建文本文件时,它应该显示在 PHP 页面上。
我得到的问题是文本文件没有被更新。它和我手动执行 shell 脚本时创建的一样旧。(输出必须改变。)
脚本未运行或未创建文本文件。我不知道现在该怎么办。
到目前为止,我已经这样做了:
最终的.php
<html>
<body>
<?php
if (isset($_POST['Submit1'])) {
echo shell_exec('sh /home/anas/kaldi/egs/voxforge/s5/new_run.sh');
sleep(15);
echo file_get_contents("/home/anas/kaldi/egs/voxforge/s5/results/text.txt");
}
?>
<form action="final.php" method="post">
<input Name="Submit1" type="submit">
</form>
</body>
</html>
解决方案
根据我的实验结果,这是由于权限问题。
我创建了两个文件:
例子.sh
#!/bin/bash
echo 123
索引.php
<?php
echo shell_exec("sh /path/to/stackoverflow/example.sh");
echo "done";
当权限example.sh
为777时,一切正常。
当权限example.sh
为000时,
会在终端输出权限不足, 在浏览器中什么也不输出。
我注意到您应该在浏览器环境中,因此不会输出任何内容也不会出现错误
推荐阅读
- python-3.x - 无法使用 Gstreamer-Python 为两个摄像头设置参数
- cordova - 什么是cordova ios config.xml 文件设置
- ms-access - 在 ms 中访问如何以编程方式将查询导出到文本文件
- sql-server - 如何在 SQL Server 中的字符串中查找整数值
- python-3.x - 在 Python 中随时间序列数据移动具有高斯形状的窗口
- fullpage.js - Fullpage.js - 移动设备上的锚点在滚动时不会回到该部分的顶部
- spring - 在 repo.spring.io 端点遇到间歇性问题
- javascript - 我似乎无法使“getElementsByID”正常工作,始终返回“未捕获的类型错误:无法读取未定义的属性。”
- jquery - jQuery Sortable 获取新的父 ID?
- c++ - 已创建 GitHub 存储库但无法上传 VS 解决方案