Python's os.execvp эквивалент для PHP - PullRequest
4 голосов
/ 07 ноября 2008

У меня запущена программа командной строки PHP. И я хочу подключиться к оболочке mysql прямо из PHP. Я делал это раньше в Python, используя os.execvp, но я не могу заставить то же самое работать в PHP.

Я пробовал следующие функции:

  • система
  • PassThru
  • 1010 * Exec *
  • shell_exec

пример:

system('mysql -u root -pxxxx db_name');

Но все они, похоже, ждут выхода mysql и возврата чего-либо. Что я действительно хочу, так это чтобы PHP запускал оболочку mysql и затем сам выходил из нее. есть идеи?

Ответы [ 3 ]

3 голосов
/ 08 ноября 2008

Если вы хотите, чтобы команды оболочки были интерактивными, используйте:

system("mysql -uroot -p db_name > `tty`");

Это будет работать в большинстве случаев, но сломается, если вы не находитесь в терминале.

0 голосов
/ 07 ноября 2008

В дополнение к тому, что сказал acrosman, вы также можете использовать ключ -e для передачи SQL из командной строки.

$sql = ".....";
system("mysql -u root -pxxxx db_name -e \"$sql\"");

Кроме того, я надеюсь, что вы на самом деле не подключаетесь к базе данных как пользователь root из приложения PHP.

0 голосов
/ 07 ноября 2008

Дайте MySQL скрипт для запуска, отдельный от PHP-скрипта:

system('mysql -u root -pxxxx db_name < script.mysql');
...