Vì vậy, tôi đang cố gắng thực hiện một thử nghiệm đơn giản về một số chức năng email trong ứng dụng PHP (Magento), nhưng tôi đang gặp sự cố. Tất cả những gì tôi muốn làm là lưu trữ đầu ra từ các lệnh gọi tích hợp sẵn email()
chức năng vào một tệp cục bộ thay vì gửi nó qua máy chủ SMTP.Trước đây, tôi biết cách và đã thiết lập quyền truy cập SMTP cho ứng dụng này, nhưng phải mất một thời gian và tôi nghĩ rằng dù sao thì cũng không khó để thực hiện theo cách này.
Sau khi xem tài liệu, có vẻ như nó sẽ rất đơn giản vì sendmail_path
tùy chọn cấu hình dường như là chính xác những gì tôi cần. Tôi đã xác minh rằng cả trên dòng lệnh và thông qua Apache, tệp cấu hình php.ini đang được tải là cùng một tệp, vì vậy tôi đã chỉnh sửa tệp đó và đặt sendmail_path
đến /usr/local/bin/testsendmail
. Sau đó, tôi đã tạo một tập lệnh mới tại đường dẫn đó để nhận đầu vào và ghi vào /tmp/sent-mail.html
. Tôi đã tạo tập tin đó và chắc chắn rằng nó có 777
quyền chỉ để đảm bảo rằng tôi không gặp phải lỗi về quyền (các gửi thư kiểm tra
kịch bản cũng đã có 775
quyền vì lý do tương tự).
Để gửi email từ một trang web, tôi đã tạo một tập lệnh PHP thử nghiệm đơn giản không làm gì ngoài việc thực hiện cuộc gọi đến email()
sử dụng một số dữ liệu thử nghiệm. Khi tôi chạy tập lệnh này qua php /var/www/html/test/test.php
, nó chạy chính xác như tôi mong đợi: nó kêu gọi gửi thư kiểm tra
tệp sau đó ghi email vào tệp tôi đã chỉ định. Tuy nhiên, khi tôi mở URL này trong trình duyệt, email()
hàm trả về thật
nhưng không làm gì khác.
Tôi đã bật tất cả các tùy chọn ghi nhật ký lỗi thông thường, tôi không nhận được gì với những tùy chọn đó. Nó tiếp tục chạy sau khi email()
gọi, vì vậy nó không bị lỗi âm thầm. Tôi đảm bảo rằng tất cả các tệp được đề cập đều có quyền mở nên không có khả năng xảy ra lỗi về quyền. Điều duy nhất tôi có thể nghĩ đến là có thể Apache tạo ra một quy trình mới để gửi thư và vì lý do nào đó, quy trình này không được phép sửa đổi tệp hoặc thứ gì đó? Tôi thực sự không chắc chắn, vì vậy bất kỳ trợ giúp nào cũng sẽ được đánh giá cao. Tôi có thể gửi nội dung chính xác của các tập lệnh kiểm tra, nhưng chúng thực sự không có gì khác ngoài lệnh gọi tới email()
và file_put_contents()
để ghi dữ liệu ra.