sh — PHP не может найти мой сценарий оболочки, чтобы выполнить его с помощью shell_exec ()

Оказывается, мой FTP-клиент испортил мой сценарий оболочки, так что спасибо всем, кто внес свой вклад. 🙂

===============================

Я пытаюсь использовать PHP для выполнения сценария оболочки, хранящегося в той же директории, что и мой сценарий PHP, используя exec(), но я получаю ошибку:

sh: 1: ./hlsvod.sh: not found

Я попытался использовать полный путь к сценарию, я изменил его 777, я пытался использовать shell_exec() но я все еще получаю ту же ошибку (я перенаправил stderr в stdout чтобы получить это). Сценарий определенно существует. Не могли бы вы помочь?

Код:

<?php
/* Probably not the most elegant solution but it works. */
$pid = $_GET['pid'];
if(empty($_GET['pid'])){
die("No PID -- do ?pid=XXXXXXXX");
}
$tmpfile = exec("./hlsvod.sh ".$pid." 2>&1");

echo nl2br(shell_exec("pwd;whoami;"));
var_dump($tmpfile);
$a = fopen($tmpfile."m3u8", "r");
$stream = fread($a);
fclose($a);
$b = fopen($tmpfile."subs");
$subs = fread($b);
fclose($b);
var_dump($stream);
var_dump($subs);
?><!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width,user-scalable=no">
<title>New 3DS iPlayer - <?=$pid;?></title>
</head>
<body>
<h1>Live HLS Stream for <?=$pid;?></h1>
<p>HLS stream URL: <a href="<?=$stream;?>"><?=$stream;?></a></p>
<p>VTT subtitles URL: <a href="<?=$subs;?>"><?=$subs;?></a></p>
<video id="video" controls preload="metadata">
<source src="<?php echo $stream; ?>">
<track label="English" kind="subtitles" srclang="en" src="<?=$subs;?>" default>
</video>
</body>
</html>

-1

Решение

Попробуйте использовать абсолютный путь, как это

$tmpfile = exec("sh: 1: " . $_SERVER["DOCUMENT_ROOT"] . "/hlsvod.sh ".$pid." 2>&1");
1

Другие решения

Оказалось, мой FTP-клиент задрал конец строки и перепутал все в моем сценарии оболочки.

Следите за окончаниями строк!

0

проверьте эту ссылку для выполнения команд оболочки с помощью php

<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
-1
По вопросам рекламы [email protected]