【问题标题】:What is the best practice to include files in PHP?在 PHP 中包含文件的最佳做法是什么?
【发布时间】:2015-04-30 04:49:51
【问题描述】:

我刚刚遇到了那个代码

include('../wp-load.php');

仅当从 Web 浏览器调用脚本时才有效(等于“从 Apache”)。如果我从 cron 或命令行运行相同的脚本,我会收到错误

Warning: include(): Failed opening '../wp-load.php' for inclusion (include_path='.:/usr/local/php54/pear') in /home/myfolder/public_html/exe/myscript.php on line 6

但是,如果我按以下方式修改包含,它会起作用:

include(__DIR__.'/../wp-load.php');

它适用于:命令行和浏览器。

与此同时,我开始害怕使用脚本所在目录中的包含。所以如果tools.php放在同一个目录下使用是否安全:

include('tools.php');

还是加__DIR__比较好?

include(__DIR__.'/tools.php');

【问题讨论】:

  • 总是更好地包含(DIR.'/tools.php');
  • @PrashantMBhavsar,你的意思是include(__DIR__.'/tools.php');

标签: php include include-path dir


【解决方案1】:

在脚本的顶部,或在您始终包含在开头的文件中,定义常量或变量作为您的目录根目录的路径。 您应该定义两条路径: 一个来自您的机器,例如:

define('SERVER_PATH', '/var/www/');

这将用于在您的 php 脚本中包含 php 脚本文件

您将在代码中的任何位置像include(SERVER_PATH.'tools.php') 一样使用它。 如果你的 PHP >= 5.3.0

,你也可以使用__DIR__

第二个 - url 路径:

define('URL_PATH', 'http://www.xxxxxx.com/');

这将被您的页面用于 http 请求,如图像、javascript 文件、css 文件等。

【讨论】:

  • 它比使用__DIR__ 常量更好吗?
  • 在这种情况下__DIR__ 更好,因为它始终存在,并且也可以在子目录中使用。
  • __DIR__ 适用于 PHP >= 5.3.0,如果是这个版本或以上,可以用它代替这个SERVER_PATH。
  • 您能否将此信息包含在您的答案中?我愿意接受你的。
【解决方案2】:

Cron 有自己的工作目录,但是你可以用 cd 来改变它:

cd /var/www/vhosts/domain.com/httpdocs

您还需要知道您可以像这样在 cron 作业中执行多个命令:

command1 && command2

所以 command1 可以是 cd 和 command2 你的 php。

那么您不必添加 __DIR__ 并且 cron 作业将像普通 PHP 一样工作。

我知道这并不能真正回答您的问题,但它确实解决了让您提出问题的问题。就我个人而言,我认为没有充分的理由总是在包含中使用绝对路径,在大多数情况下,相对路径就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2011-07-20
    • 1970-01-01
    • 2019-01-12
    • 2013-09-20
    • 2017-04-21
    • 1970-01-01
    相关资源
    最近更新 更多