【问题标题】:php exec function on xampp work in windows but not on linuxxampp上的php exec函数在windows上工作,但在linux上不工作
【发布时间】:2012-12-28 15:56:42
【问题描述】:

几个月前,我在 Windows 上的 Visual Studio 中编写了这个 c++ 代码。我从该代码制作 .exe 文件,一切正常。现在我尝试在 Linux 上做同样的事情,以便我可以将可执行文件放在 Linux Web 服务器上。如果从控制台调用,我的 linux 可执行文件可以工作。但我无法通过浏览器运行可执行文件。 这在 xampp windows 上对我有用:

<?php
$imagename = $_GET['imagename'];
exec('inpainting.exe' .$imagename); 
echo "<img src=\"./images/img-uploads/ob_img$imagename.jpg\" />";
?>

如何在 xampp linux 上运行它?我为 linux 制作了新的执行文件,该文件的名称只是 inpainting_linux

【问题讨论】:

  • 使用exec() 是个坏主意。
  • 你确定权限+所有者是正确的?
  • 为什么inpainting.exe 会在Linux 上运行? :-)
  • 当有人http://example.com&amp;imagename= ; rm -rf / 时,您的服务器会被完全摧毁。您确实需要停止处理此代码并首先学习安全编码实践。
  • @David-SkyMesh:不仅如此,inpainting.exeSomeImageName.jpg 还需要在 Linux 上存在并运行...

标签: php linux image-processing xampp exec


【解决方案1】:

你缺少空间:

exec('inpainting.exe'.$imagename);  
                    ^-- here

意味着给定一个查询字符串(比如)kittens.jpg,您将执行:

inpainting.exekittens.jpg
             ^^---note lack of space

这几乎绝对保证会产生“没有这样的文件或命令”错误。

请注意我上面的评论。您绝对BEGGING 使用此代码远程销毁您的服务器或至少 pwn3d。请在可公开访问的服务器上运行此代码。或者更好的是,把代码拿出来烧掉。

【讨论】:

  • 好吧,inpainting.exe 不太可能在 Linux 服务器上工作,即使没有丢失的空间。
  • 假设 OP 正在正确构建 linux 可执行文件,没有理由不能将 linux 二进制文件称为 something.exe。 unix/linux 不关心文件扩展名是什么,只要文件设置了适当的执行位。
  • @Marc B. - 不要成为仇恨者。是的,我是初学者!那有什么问题?多一个空间不是解决方案。我前几天试过了。
猜你喜欢
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多