Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 找到特定目录名的有效方法?_Php - Fatal编程技术网

Php 找到特定目录名的有效方法?

Php 找到特定目录名的有效方法?,php,Php,我有一个脚本,我已经写了,我卖给其他谁想要一个虚拟礼物应用程序在Facebook上。由于购买此脚本的许多客户实际上并不具备编程知识,因此我尝试通过收集尽可能多的数据(例如使用$\u SERVERvars)来尽可能简化工作 但是,我在尝试为图像建立静态目录时遇到了一个问题,即代码可以读取并始终知道该目录的位置 例如,我的“masterfile.php”包含在大多数页面上,我有以下内容: $app_info['server_url']="http://".$_SERVER['SERVER_NAME'

我有一个脚本,我已经写了,我卖给其他谁想要一个虚拟礼物应用程序在Facebook上。由于购买此脚本的许多客户实际上并不具备编程知识,因此我尝试通过收集尽可能多的数据(例如使用
$\u SERVER
vars)来尽可能简化工作

但是,我在尝试为图像建立静态目录时遇到了一个问题,即代码可以读取并始终知道该目录的位置

例如,我的“masterfile.php”包含在大多数页面上,我有以下内容:

$app_info['server_url']="http://".$_SERVER['SERVER_NAME'];
$app_info['callback_url']=$app_info['server_url'].dirname($_SERVER['PHP_SELF'])."/";
$app_info['image_url']=$app_info['callback_url'].'images/';
这为我提供了文件夹所在位置所需的所有必要信息。。。除非我将父目录中的目录用于整个脚本(即:/folder/ajax/)

我遇到了一个问题,在处理父目录中的其他目录时,“images”文件夹需要始终为“/folder/images/”,而不是以“/folder/ajax/images/”结尾

我不能硬编码父目录名,因为有些客户将它们上载到“/folder/folder/folder/folder/script/”等目录中-这就是为什么我使用
$\u SERVER['PHP\u SELF']
来建立父目录

有没有一种方法(或变量)可以用来解决这个问题?我只需要确保
$app\u info['callback\u url']
始终相同,而不管当前目录如何

谢谢

我将在应用程序的引导类型文件中定义一个base dir常量

define('BASE_DIR', basedir(__FILE__));
(如果您可以保证>=PHP5.3,您可以使用
\uuuuu DIR\uuuu

然后简单地包含基于此常量的文件

include BASE_DIR . '/something.php';

这就是用户有这么多../的文件夹将包含在图像路径中的数量

$dir = scandir('/testdir');
$dots = '/';

for($i = 0;$i < sizeof($dir)-2;$i++) // -2 not to count . and .. as folders
{
    $dots .= '../';
}

$app_info['server_url'] = "http://" . $_SERVER['SERVER_NAME'];
$app_info['callback_url'] = $app_info['server_url'] . dirname($_SERVER['PHP_SELF']) . "/";
$app_info['image_url'] = $app_info['callback_url'] . "{$dots}images/";
$dir=scandir('/testdir');
$dots='/';
对于($i=0;$i
不幸的是,images文件夹位于父目录中,而不仅仅位于服务器上。我知道你在想什么,但当你向客户销售时,你必须考虑到他们可能有自己的文件夹,他们不想调整。因为文件夹没有限制,你可以制作很多文件夹/path/to/folder/one/你可以使用/。/../../../../images/。示例:$app_info['image_url']=$app_info['server_url']./../../..//图像/';问题是我不知道镜像目录和服务器之间有多少文件夹。它会因客户而异。我已经编辑了我的帖子。计算用户定义的文件夹,然后根据需要添加尽可能多的../。如果它不起作用,请尝试使用-1更改sizeof($dir),因为-2会删除。和。。文件夹,但我们可能需要包括当前文件夹(在示例testdir中),因此这可能会计算在内。作为当前的文件夹testdir.I,我以前在这方面遇到过问题(这主要与在其他国家,特别是非洲或欧洲使用免费主机的客户有关)。我可能只是通过父目录中的处理文件来路由所有AJAX调用,这样我就可以始终访问正确的目录。