Почему этот php-скрипт не выполняет bash-скрипт?

Почему я не могу выполнить этот скрипт bash с использованием php? я пытался exec() так же как shell_exec(),

index.php

<?php
$old = getcwd();
echo $old;
chdir($old);
$message=exec("a.sh");
print_r($message);
?>

a.sh

#!bin/bash
echo "i am a" > /opt/lampp/htdocs/a.txt
echo "Done"

я пытался chdir как предложено здесь, а также я проверил мой disable_functions в php.iniнет ничего Я также проверил другие вопросы, но, похоже, ни один из них не решил мою проблему.

1 ответ

Решение

Во-первых, убедитесь, что шебанг точно такой:

#!/bin/bash

Во-вторых, убедитесь, что скрипт исполняется с помощью следующей команды в терминале:

chmod +x /path/to/a.sh

И в-третьих, вы должны использовать полный путь для скрипта bash, или в вашем случае вы можете использовать:

$message=exec("$old/a.sh");

И, как примечание, следующие две команды из вашего php-скрипта не имеют смысла:

$old = getcwd();
chdir($old);

Они эквивалентны chdir(getcwd()), которые меняют текущий каталог на... текущий каталог, так что на самом деле ничего не происходит.

Другие вопросы по тегам