Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chạy mysqldump từ một tập lệnh PHP không hoạt động nhưng hoạt động trên SSH

Phỏng đoán có học

Nếu tôi có thể đưa ra một phỏng đoán có học thức thì đó là do người dùng chạy php-script (tức là người dùng mà httpd được chạy với tư cách) không có quyền ghi vào /var/www/vhosts/mydomain.com/httpdocs/tools/ .

Mặc dù người dùng bạn đang sử dụng để thực thi lệnh có.

STDERRSTDOUT

Để xem có gì được in ra STDERR không có liên quan đến vấn đề, hãy sử dụng đoạn mã dưới đây!

$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!");
}

Kiểm tra tệp nhật ký!

Bạn đã kiểm tra error_log chưa được liên kết với httpd của bạn ?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql thêm người dùng để truy cập từ xa

  2. MySQL Hiểu các phép nối cơ bản

  3. Cách tránh lỗi hết bộ nhớ trong trình duyệt do quá nhiều lệnh gọi ajax

  4. Làm cách nào để tạo id duy nhất trong MySQL?

  5. Cách thực hiện 2 truy vấn cập nhật trong một giao dịch với JDBC