Php 壳牌执行董事不';不能在Linux服务器上工作
我在Windows WAMP服务器上使用youtube-dl.exe,并且Php 壳牌执行董事不';不能在Linux服务器上工作,php,linux,server,exec,shell-exec,Php,Linux,Server,Exec,Shell Exec,我在Windows WAMP服务器上使用youtube-dl.exe,并且shell\u exec()在Windows上工作得很好,我从youtube dl获得了正确的信息(返回字符串) 一旦相同的PHP脚本被上传到我真正的Linux服务器上,它就会停止工作,即使我上传了Linux版本的youtube dl 对于我从VirtualBox上Linux机器上的sudo curl命令获得的Linux版本文件,我尝试执行以下操作: $var = shell_exec("youtube-dl -g htt
shell\u exec()
在Windows上工作得很好,我从youtube dl获得了正确的信息(返回字符串)
一旦相同的PHP脚本被上传到我真正的Linux服务器上,它就会停止工作,即使我上传了Linux版本的youtube dl
对于我从VirtualBox上Linux机器上的sudo curl命令获得的Linux版本文件,我尝试执行以下操作:
$var = shell_exec("youtube-dl -g https://www.youtube.com/watch?v=97Eagwlt-ZA");
对于我的WAMP服务器(exe)上的相同版本:
这两个命令完全不返回任何内容,两个不同版本的文件位于同一根(/)文件夹中,并且
$var = exec("youtube-dl -g https://www.youtube.com/watch?v=97Eagwlt-ZA", $errors);
$errors
返回空数组()
但是
工作起来就像一个符咒(创建内部带有“test”的测试文件)
PHP和youtube dl文件的CHMOD设置为755。PHP版本5.6。我真的被困在这里了。。有什么想法吗?需要检查的几件事:
- 检查以确保youtube dl具有Web服务器用户的执行权限。在Linux系统上,脚本必须标记为可执行,才能直接运行。设置755个权限就可以了
- 向路径(例如../youtube dl)添加/或确保youtube dl位于web服务器的$path上。与Windows不同,当前目录不会自动包含在路径中
- 如果Linux服务器正在运行SELinux或AppArmor,这些应用程序可能会阻止web服务器运行命令。您通常可以在系统日志中找到有关项目被阻止的信息
$var = exec("youtube-dl -g https://www.youtube.com/watch?v=97Eagwlt-ZA", $errors);
$var = shell_exec("echo test > test.txt");