当前位置: 首页 > 知识库问答 >
问题:

php shell_exec和exec不能与shell脚本一起使用

殷宾白
2023-03-14

这是我为树莓pi编写的代码,它可以从树莓中获取一张静止的照片,并将其保存在一个目录中,

<?php
  exec('raspistill -n -hf -o /var/www/img/image.jpg --timeout 1');
?>

我已经给出了使用-R在forlder中读/写的所有权和权限,所以我在 /var/www的ls-al是这样的

drwxr-xr-x  3 www-data www-data 4096 Jun 19 08:05 .
drwxr-xr-x 12 root     root     4096 Jun 19 05:54 ..
-rwxrwxrwx  1 www-data www-data   74 Jun 19 08:30 getImg
drwxrwxrwx  2 www-data www-data 4096 Jun 19 09:21 img
-rw-r--r--  1 root     root       70 Jun 19 10:07 index.php

getImg是我试图将脚本作为类似于shell_exec('/bin/bash./getImg')的文件运行的脚本 这也不起作用。

我添加了 /bash/bin,并试图在不使用脚本文件的情况下运行脚本,但没有得到结果。

当我试图在终端中运行php文件时,它会像往常一样创建图像。所以我想这一定是权限问题,但是我还应该如何处理权限呢?我已经给了目录的所有权利。

编辑

所以我找到了一个解决办法。由于我不知道问题的原因是什么,我不会将此标记为答案,但请投票将其显示在顶部。

我现在使用cgi脚本执行脚本。我已经在/usr/lib/cgi-bin/中创建了一个外壳脚本

#!/bin/bash
echo "Content-type:text/html\n"
sudo raspistill -vf -n -o /var/www/img/image.jpg --timeout 1200 --metering matrix
echo "Status: 204"

我将此保存为捕获并使其可执行,但并没有对权限进行任何操作。

sudo chmod +x capture

现在当我打开链接http://192.168.1.85/cgi-bin/capture浏览器仍会向我发送一条500内部服务器错误消息。然而,图像仍然会被创建。

我现在需要修复500内部服务器错误。


共有1个答案

韦阳辉
2023-03-14

[我想加上这个作为评论,但没有足够的分数]

>

  • 如果您使用可选参数$输出和$return_var来捕获输出和返回值,您会得到什么?

    string exec(string$命令[,数组

    您的命令是否依赖于当您以用户身份运行时可能可用的环境变量,而不是www数据?(您可以使用env命令来检查)

    如果在用户切换到www数据后通过终端运行它,它是否仍然有效?

  •  类似资料:
    • 我必须使用Fred的ImageMagick脚本创建图像的过渡序列,特别是fx过渡。 在我的PHP代码中,我将所有的图片调整为标准大小,然后我将所有这些图片重命名为pic000001.jpg,pic000002.jpg,pic000003.jpg等(我用$Count计数),那么我做: (这肯定是脚本生成的消息),然后是如下消息: 因为图片没有生成(它揭示了对帧编号的高维是正确的,所以不要专注于此)。

    • 我正在尝试使用PHP从HTML生成PDF。我正在运行MacOSX作为我的开发环境,尽管我希望这段代码在生产linux服务器上运行。 到目前为止,我得到了: 此代码在/tmp/tmp_PDF中生成PDF。pdf。问题是它永远不会 浏览器挂起,表示正在等待服务器。。。。 就好像shell_exec命令永远不会结束。我注意到当我从终端运行wkhtmltopdf时,它没有退出回命令行。我得到: 然后它也放

    • 问题内容: 我正在使用此处提供的有用示例,使用JSch exec在远程服务器上执行Shell脚本。我可以看到脚本返回的回显,并且结尾处的退出状态为0-乍一看,一切看起来都很不错。 但是,问题在于该脚本本身会调出其他脚本,而这些脚本似乎被完全忽略,只是被跳过了。 该脚本直接调用其他脚本。即脚本的第一行是这样的: 任何人都可以建议以任何方式克服这一点吗?我确实开始研究“ shell”通道而不是“ ex

    • 我试图用DataJpaTest注释测试我的存储库,但出现了一些奇怪的情况。 当我使用经典的时,一切正常,我的测试成功了。但是当我使用下面的生成器时,我的测试失败了。 测试应该成功,但其他测试没有成功,因为没有抛出关于约束有效性的异常。 例如,这里有一个失败的断言: Java语言AssertionError:预期测试将抛出org的实例。springframework。道。DataIntegrityV

    • 我的application.properties文件中有以下属性。 当我使用注释在spring控制器中使用属性时,它给我的值为2003,但当我通过获得它的值时,我获得的值为 如何使用AbstractenVironment获得值2003?