当前位置: 首页 > 面试题库 >

如何使PHP,Symlinks和__FILE__一起良好地工作?

公冶谦
2023-03-14
问题内容

在本地主机上。我有以下目录结构:

/share/www/trunk/wp-content/plugins/otherfolders

/share/www/portfolio/wp-content/symlink

symlink到的符号链接在哪里/trunk/.../plugins/。基本上,这是因为我需要测试并安装多个WordPress,但是我不想移动插件并将其复制并粘贴到任何地方。

但是,有时我需要爬上目录树以包含配置文件:

 $root = dirname(dirname(dirname(dirname(__FILE__))));
      if (file_exists($root.'/wp-load.php')) {
          // WP 2.6
          require_once($root.'/wp-load.php');
      }

该文件夹始终解析为:

/share/www/trunk

即使插件正在执行并包含在其中

/share/www/portfolio/

在PHP中是否可以通过在share/www/portfolio符号链接中执行的脚本将目录中的文件包含到/share/www/trunk/.../plugins目录中?

尽管此问题仅在我的测试服务器上发生,但我想拥有一个可安全分发的解决方案,因此 无法选择额外的级别


问题答案:

我在您的代码中看到的问题是__FILE__自动解决符号链接。

摘自PHP MagicConstants手册

从PHP 4.0.2开始,__FILE__始终包含一个绝对路径,其中的符号链接已解决。

您可以尝试使用$_SERVER["SCRIPT_FILENAME"]

$root = realpath(dirname(dirname(dirname(dirname($_SERVER["SCRIPT_FILENAME"])))));
  if (file_exists($root.'/wp-load.php')) {
      // WP 2.6
      require_once($root.'/wp-load.php');
  }

请注意,我将该realpath()函数添加到了根目录。根据您的设置,您可能需要也可能不需要。

编辑:使用$_SERVER["SCRIPT_FILENAME"]代替$_SERVER["PHP_SELF"]文件系统路径。



 类似资料:
  • 问题内容: 一个星期以来,我一直在思考Webmachine应用程序中Redis使用的问题。而且我还没有开悟。 我将使用Eredis,这是用法示例: 据我了解,应该只在某个地方调用一次。但是,如何获得资源的可变性呢? 问题答案: 有几种解决方案: 在本地或全局注册Redis连接 使用gproc之类的进程寄存器 将连接的pid保留在webmachine资源上下文中 使用连接池,例如pooler或poo

  • 问题内容: Django的新手,ReactJS的新手。我一直在研究AngularJS和ReactJS,但是决定使用ReactJS。尽管AngularJS拥有更多的市场份额,但它似乎正在逐步超越AngularJS的知名度,并且据说ReactJS更快地被接受。 撇开所有垃圾,我开始学习Udemy的课程,并看了几段视频后,查看它与Django的集成程度似乎很重要。那就是当我不可避免地碰壁只是要启动并运行

  • 问题内容: 运行代码时出现该错误。好的,很好-我只是忘记了获取XMLBeans …,但是它已经退休了,我在他们的档案中找不到最新版本。因此,我发现JAXB可以替代,我下载了JAXB并尝试将jar文件添加到Intellij的库中,但是在寻找XMLBeans依赖项时仍然遇到相同的错误。 如何获得Apache POI以使用JAXB代替XMLBeans?为什么JAXB有7种不同的jar文件,而我却找不到它

  • 问题内容: (我对RESTFul不熟悉,如果我的概念有误,请纠正我) 在RESTFul体系结构中,我们将每个操作映射到URL。如果我单击“发布文章”,可能实际上是URL 和一些数据。 如果我要发布而不是刷新整个网页,则可以使用javascript的XMLHTTPRequest。我发布它,然后获取它的内容,并将其插入到页面的div中。这些动作都是异步的。 然后我知道有一个名为的东西,它是包装器。它使

  • 问题内容: 我刚刚开始使用JSF,看起来很棒,但是我似乎无法弄清楚这最后的障碍。 我习惯了传统的Jquery AJAX函数,这在我的书中很完美。但是我希望找到一种方法使其与JSF协调工作。 这是一个说明我的情况的方案。 我的网站上有一个消息传递页面,用户可以在其中互相发送消息。所以在我的xhtml页面中,我看起来像这样: 效果很好。用户可以发布他们的消息,并将其加载到上面的对话div中。但是现在我

  • 问题内容: 我正要用于通过Ajax返回部分视图的Action;但我没有得到想要的行为(尽管它是我期望的行为)。 似乎是一个远景;但是,是否有任何方法可以扩展此属性以“爆发” AJAX调用并将整个页面重定向到登录屏幕?(而不是将登录屏幕返回到我设置了UpdateTargetId的任何位置?) 我想我对如何在每个特定的Ajax调用中做到这一点有所了解,但是如果我可以以某种方式进行集中化,则可以节省很多