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

我正在运行一个Centos 5服务器,并且想要设置一个每个月10号运行的cronjob,但是我不得不关注下面的问题。

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

如果我去testing目录例如。 cd /var/www/html/test并input./sendMails.php我的脚本运行完美。

在testing目录中是一个名为模板的文件夹,在模板文件夹中是一个名为index.htm的文件。 index.htm正在通过php函数file_get_contentssendMails.php中读取。

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

任何意见将不胜感激

你是否也移动了模板目录?

你最好把文件放在某个地方,让脚本成为绝对path。 例如/path/to/your/script.php,并在脚本中包含(/path/to/your/include/dir/index.html)

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

我认为我不能硬编码每个脚本的绝对path ,至less如果没有真正的必要性的话。 这是一个强大的可移植性限制。

正确的方法是使用dirname(__ FILE__)计算运行时的绝对path,以检索当前脚本的目录(脚本本身,而不是脚本的包含器,如果存在的话)

在你的情况下,你可以做

 <?php #Sendmail.php file_get_contents(dirname(__FILE__).'/template/index.htm') ?> 

这必须在任何地方工作!

创build一个改变目录并运行php脚本的shell脚本; 然后从cronjob调用这个shell脚本。

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