通过 Linux 运行 PHP 文件以包含目录时出现问题?

通过 Linux 运行 PHP 文件以包含目录时出现问题?

我正在运行 Centos 5 服务器,并且想要设置一个 cronjob 在每月的 10 号运行,但我需要考虑以下问题。

我需要运行的 PHP 文件/var/www/html/test/名为sendMails.php

如果我进入测试目录,例如,cd /var/www/html/test输入./sendMails.php我的脚本,它就会完美运行。

在测试目录中有一个名为 template 的文件夹,在模板文件夹中有一个名为index.htm.的文件,正在通过 php 函数index.htm读取。sendMails.phpfile_get_contents

现在我从我的主目录运行脚本,例如,php /home/roland/sendMails.php我收到以下错误file_get_contents(template/index.htm): failed to open stream: No such file or directory并且不明白为什么,如果我设置了 cron,这也会失败。

任何建议都将不胜感激

答案1

您也移动了模板目录吗?

最好将文件放在某处,并将脚本设为绝对路径。例如 /path/to/your/script.php 和脚本中的 include(/path/to/your/include/dir/index.html)

答案2

正如已经说过的,最好使用绝对路径。

我想我在每个脚本中硬编码绝对路径并不好,至少如果没有真正的必要的话。这是一个强大的可移植性限制。

正确的方法是在运行时计算绝对路径使用目录名(__FILE__)检索当前脚本的目录(脚本本身,而不是脚本的包含者(如果存在))

就你的情况而言你可以

<?php
#Sendmail.php

file_get_contents(dirname(__FILE__).'/template/index.htm')
?>

这必须在任何地方都有效!

答案3

创建一个更改目录并运行 php 脚本的 shell 脚本;然后从 cronjob 调用该 shell 脚本。

答案4

您可以在 PHP 文件的顶部添加“chdir('/var/www/blabla');”。

相关内容