php - Linux PHP 创建文件权限被拒绝

标签 php linux youtube file-permissions

我正在 Ubuntu 上工作,并试图让 PHP 脚本工作,该脚本将允许用户输入 Youtube 视频 URL,该脚本将下载 flv 并使用 youtube2mp3 进行转换(我在这里找到: http://hubpages.com/hub/Youtube-to-MP3-on-Ubuntu-Linux ) 。我收到了一些错误,我确信这些错误是基于权限的,我想知道纠正这些错误的最佳和最安全的方法。现在我正在打电话

echo system("youtube-dl --output=testfile.flv --format=18 $url");

只是为了尝试让下载部分正常工作。下一页显示的是

[youtube] Setting language
[youtube] xOMEi2g_oEU: Downloading video webpage
[youtube] xOMEi2g_oEU: Downloading video info webpage
[youtube] xOMEi2g_oEU: Extracting video information
[youtube] xOMEi2g_oEU: Extracting video information

在显示我的其余(不相关)输出之前。在 apache 错误日志中,我得到

ERROR: unable to open for writing: [Errno 13]
    Permission denied: u'testfile.flv.part'

这显然表明存在权限问题。我是否必须将有问题的目录 chown 给 www-user?这样安全吗?或者我应该 chmod 目录?最终我将把它放在面向公众的服务器上,我不希望我的实现中出现任何漏洞。非常感谢任何和所有的建议和答案!

最佳答案

这是在用户运行 php 进程时运行的,所以有两件事:

  1. 确保该用户有权访问您将测试文件写入的目录。我会指定一个独立的路径,而不是它现在正在执行的 Web 服务器目录结构的一部分
  2. $url 是否来自用户输入?如果是,我将对整个字符串使用 escapeshellcmd 以确保其中不存在随机的 rm -rf * 命令。

关于php - Linux PHP 创建文件权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5547584/

相关文章:

php - CURLOPT_RETURNTRANSFER 设置为 true 在托管服务器上不起作用

javascript - 在我的例子中如何通过 ajax 获取数据?

linux - 如何为 2 个节点之间的并发文件访问实现共享存储 (Linux)

javascript - Internet Explorer 8-Youtube JSONC API出现SCRIPT1010错误

javascript - Youtube Iframe Api无法加载视频

php - 为什么我的 PHP 代码没有更新 SQL

javascript - 在莫里斯图栏顶部显示计数?

mysql - 无法在 CentOS 7.6 上远程连接 MariaDB 10.3

c - 缓冲区不从线程执行的函数 - 适用于 Linux 而不适用于 OS X

javascript - 像盒子一样的Facebook正在覆盖youtube iframe