亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Sendmail 管道到 PHP:無法打開輸入文件

Sendmail 管道到 PHP:無法打開輸入文件

PHP
函數式編程 2021-10-22 10:41:17
我已經安裝了 sendmail 并希望將傳入的電子郵件通過管道發送到 php。每次我向服務器發送電子郵件時,都會收到一封帶有錯誤消息的電子郵件:無法打開輸入文件:/root/fw/catcher.php 554 5.3.0 未知郵件錯誤 1我認為具有 權限的東西catcher.php是錯誤的,但我自己無法弄清楚。Sendmail 已安裝,我添加了一個別名:root: "|/usr/bin/php /root/fw/catcher.php"權限(之后chmod 777;我試過了chmod 777,chmod 755但都不起作用):drwxrwxrwx 2 root root 4096 Jul 20 14:27 fw-rwxrwxrwx 1 root root   45 Jul 20 14:27 catcher.phpcatcher.php(將行尾轉換為 Unix 風格):#!/usr/bin/php<?php echo 'Test'; exit(0); ?>通過 cli 執行我的 php 文件工作正常。所有這些命令都有效:/usr/bin/php /root/fw/catcher.php/usr/bin/php7.3 /root/fw/catcher.phpphp /root/fw/catcher.phpphp7.3 /root/fw/catcher.php我覺得sendmail的權限有問題。
查看完整描述

2 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

錯誤“無法打開輸入文件”表示由于某種原因無法讀取文件。


請按照以下步驟檢查:


將行尾轉換為 Unix 樣式


我不知道你如何檢查這個,但你可以嘗試使用dos2unix重做這個,如這個鏈接中所述


dos2unix catcher.php > newcatcher.php

然后比較文件大小。


這可能是因為BOM打破了腳本,描述在這里,shebang行“#!的/ usr / bin中/ PHP的”告訴其中調用此類腳本時運行需要翻譯系統。

如果腳本以 UTF-8 編碼,人們可能會想在開頭包含一個 BOM。但實際上是“#!” 字符不僅僅是字符。它們實際上是一個神奇的數字,恰好由兩個 ASCII 字符組成。如果你在這些字符之前放一些東西(比如 BOM),那么文件看起來就像有一個不同的幻數,這可能會導致問題。


該腳本將在 cli 上運行,因為您明確告訴它使用哪個解釋器:php或php7.3:


php /root/fw/catcher.php

php7.3 /root/fw/catcher.php

要從文件開頭刪除BOM,請嘗試以下操作:


dos2unix catcher.php

嘗試運行/root/fw/catcher.php,作為不使用 php 或 php7.3 可執行文件的 shell 腳本。從終端運行:


./root/fw/catcher.php


查看完整回答
反對 回復 2021-10-22
?
MM們

TA貢獻1886條經驗 獲得超2個贊

您是否檢查過 SELinux 是否已啟用并強制執行?你可以用getenforce命令看到這一點。

如果返回Enforcing,您可以通過幾種方式解決此問題。您可以使用 禁用 SELinux 強制setenforce Permissive,或創建允許 Apache 運行 sendmail 的策略。

要創建這樣的策略,最簡單的方法是使用該audit2allow工具,它是policycoreutils-python- 如果audit2allow不可用,請安裝該工具。然后,檢查/var/log/audit.log是否有關于sendmail 無法運行的錯誤。這些錯誤行可以通過管道傳輸到audit2allow創建一個可以使用semodule -i <module.pp>.


查看完整回答
反對 回復 2021-10-22
  • 2 回答
  • 0 關注
  • 144 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號