Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uruchamianie mysqldump ze skryptu PHP nie działa, ale działa na SSH

Domyślne przypuszczenie

Jeśli mogę zgadywać, to dlatego, że użytkownik uruchamiający skrypt php (tj. użytkownik, pod którym działa httpd) nie ma uprawnień do zapisu do /var/www/vhosts/mydomain.com/httpdocs/tools/ .

Chociaż użytkownik, którego używasz do wykonania polecenia, ma.

STDERR i STDOUT

Aby sprawdzić, czy coś jest wydrukowane do STDERR który ma związek z problemem, użyj poniższego fragmentu kodu!

$tubes = array(
  0 => array("pipe", "r"),
  // print contents on STDOUT to file
  1 => array("file", "/var/www/vhosts/mydomain.com/httpdocs/tools/dbbackup-2011-12-17.sql", "w"),
  2 => array("pipe", "w")
);

$p_handle = proc_open (
  "/usr/bin/mysqldump --opt --host=localhost --user=\"myuser\" --password=\"mypass\" db_name",
  $tubes, $pipes
);

if (is_resource ($p_handle)) {
    fclose ($pipes[0]);

    $stderr_data = stream_get_contents ($pipes[2]); fclose($pipes[2]);

    $proc_ret    = proc_close ($p_handle);

    echo "--------- STDERR:\n$stderr_data\n";
    echo "------------ RET: $proc_ret\n";
} else {
  die ("Unable to execute external resource, aborting!");
}

Sprawdź pliki dziennika!

Czy sprawdziłeś error_log? powiązane z Twoim httpd ?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Znajdź i zamień część ciągu

  2. Czy istnieje sposób na utrzymanie relacji db (pk/fk) w następującym scenariuszu?

  3. Tunel SSH z Pythona zamyka się automatycznie

  4. Połącz wiele kolumn z jednej tabeli do jednej kolumny z innej tabeli

  5. Wykorzystanie mocy klastrów w kontekście baz danych?