Я пытаюсь подключиться к базе данных, используя скрипт shell_exec
, но я получаю:Соединение отклонено при использовании shell_exec
MySQLi :: MySQLi(): (HY000/2002): Нет такого файла или каталога.
При использовании сценария без shell_exec
(пример: по кнопке отправки) он отлично работает.
О файле Вызывающий PHP:
shell_exec('php /Users/Desktop/save.php param')
Вызывается PHP файл:
$a=$argv[1];
saveonDB($a);
Я действительно не знаю, почему не работает при вызове функции с помощью shell_exec
. Параметры передаются правильно.
Благодаря
UPDATE:
Я сделал пример проще:
connection.php:
function connect()
{
$servername = "localhost";
$username = "root";
$password = "root";
$dbname= "db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
else{
echo "connected";
}
}
connect();
caller.php:
echo exec ("php /Users/Desktop/connection.php");
При выполнении connection.php непосредственно, он говорит:
"связный"
При выполнении из caller.php он остается: не удалось
«Подключение: Нет такого файла или каталога "
'saveonDB()' не является встроенной функцией. Каково его определение? У вас может быть ситуация, когда сокет соединения не найден через shell_exec, когда одно и то же соединение в противном случае работает с 'new mysqli()'. Пожалуйста, напишите больше кода. –
shell_exec может не иметь полной среды оболочки, которую вы обычно используете. Проверьте свои пути, на которые вы ссылаетесь, чтобы узнать, можно ли найти все доступные вам файлы. –
обновленный код, посмотрите – robot11