'/var/spool/cron';不是一个目录,正在退出。当试图通过PHP使用crontab时';s shell_exec

'/var/spool/cron';不是一个目录,正在退出。当试图通过PHP使用crontab时';s shell_exec,php,linux,apache,shell-exec,selinux,Php,Linux,Apache,Shell Exec,Selinux,我正在创建一个web应用程序。部分功能取决于用户是否可以启动/停止导入电子邮件的cronjob 它不起作用 为了确保我走上了正确的道路,作为初学者,我只想让php中的“crontab-l”正常工作,并将其打印到web浏览器上 我就是这样做的(handle_email_cronjob.php): 但我得到的只是一无所有。(执行shell_exec('ls-l');会给出目录中文件/dir的列表) cat错误日志: '/var/spool/cron' is not a directory, bail

我正在创建一个web应用程序。部分功能取决于用户是否可以启动/停止导入电子邮件的cronjob

它不起作用

为了确保我走上了正确的道路,作为初学者,我只想让php中的“crontab-l”正常工作,并将其打印到web浏览器上

我就是这样做的(handle_email_cronjob.php):

但我得到的只是一无所有。(执行shell_exec('ls-l');会给出目录中文件/dir的列表)

cat错误日志:

'/var/spool/cron' is not a directory, bailing out.
不管错误日志怎么说,它都是一个目录。ls-Z/var/滑阀:

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\u 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有关,但我不知道如何修复它


问题是什么?如何解决?(或者有比我的更好的方法吗?

在学习如何对SELinux进行故障排除后,我意识到我必须标记/var/spool/cron,以便httpd可以读取/写入该目录:

chcon -R -t httpd_sys_script_rw_t /var/spool/cron
参考资料:

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