Эквивалент os.execvp Python для PHP
-
07-07-2019 - |
Вопрос
У меня запущена программа командной строки PHP.И я хочу подключиться к оболочке mysql прямо из PHP.Я делал это раньше в Python, используя os.execvp, Но я не могу заставить то же самое работать в PHP.
Я попробовал следующие функции:
- система
- пасстру
- исполнительный
- оболочка_exec
пример:
system('mysql -u root -pxxxx db_name');
Но все они, похоже, ждут, пока mysql завершит работу и вернет что-то.Чего я действительно хочу, так это чтобы PHP запустил оболочку mysql, а затем самостоятельно вышел из нее.есть какие-нибудь идеи?
Решение
Если вы хотите, чтобы команды оболочки были интерактивными, используйте:
system("mysql -uroot -p db_name > `tty`");
Это будет работать в большинстве случаев, но выйдет из строя, если вы не находитесь в терминале.
Другие советы
Предоставьте MySQL скрипт для запуска, который отделен от PHP-скрипта:
system('mysql -u root -pxxxx db_name < script.mysql');
В дополнение к тому, что сказал акросман, вы также можете использовать -e
переключитесь на передачу SQL из командной строки.
$sql = ".....";
system("mysql -u root -pxxxx db_name -e \"$sql\"");
Кроме того, я надеюсь, что вы на самом деле не подключаетесь к базе данных как root из PHP-приложения.