1

Web アプリケーションを作成しています。機能の一部は、ユーザーが電子メールをインポートする cronjob を開始/停止できることに依存しています。

うまくいきません。

私が正しい軌道に乗っていることを確認するために、スターターとして、phpから「crontab -l」を作成して動作させ、それをWebブラウザーに出力したいだけです。

これが私のやり方です(handle_email_cronjob.php):

$output = shell_exec('crontab -l');
echo $output;

しかし、私が得るのは何もありません。( shell_exec('ls -l'); を実行すると、ディレクトリ内のファイル/ディレクトリのリストが表示されます)

猫エラーログ:

'/var/spool/cron' is not a directory, bailing out.

まあ、エラーログが何を言っても、それはディレクトリです。ls -Z /var/spool:

drwxr-xr-x. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 cron

SELinux がオンになっているので、それを変更したくありません。

ls -Z /var/spool/cron:

-rwxrwxrwx. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 apache
-rw-------. root   root   unconfined_u:object_r:cron_spool_t:s0 root

使用する必要があるのはApacheです。(cron_spool_t を apache に設定しようとしましたが、それでも機能しませんでした。)

ls -Z handle_email_cronjob.php:

-rwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_script_exec_t:s0 handle_email_cronjob.php

SELinuxに関連していると直感していますが、修正方法がわかりません。

何が問題で、どうすれば修正できますか? (または、これを行うためのより良いアプローチはありますか?)

4

1 に答える 1

2

SELinux のトラブルシューティング方法を学んだ後、/var/spool/cron にラベルを付けて、httpd がそのディレクトリを読み書きできるようにする必要があることに気付きました。

chcon -R -t httpd_sys_script_rw_t /var/spool/cron

参考文献:

audit.log について

SELinux のトラブルシューティング

于 2012-05-23T09:11:51.723 に答える