我有一个脚本,我写过我卖给其他想在Facebook上使用虚拟礼物应用程序的人。由于购买此脚本的许多客户实际上并不具备编程知识,因此我尝试通过尽可能多地收集尽可能多的数据来尽可能地简化事情(例如使用$_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/';
这给了我关于文件夹所在位置所需的所有必要信息......除非我在父目录中使用目录到整个脚本(IE:/ folder / ajax /)。
我遇到了一个问题,'images'文件夹需要始终是'/ folder / images /',而不是在使用父内部的其他目录时最终为'/ folder / ajax / images /'。
我不能只是对父目录名进行硬编码,因为有些客户将它们上传到'/ folder / folder / folder / folder / script /'这样的目录 - 这就是我使用$_SERVER['PHP_SELF']
建立父目录的原因。目录
我可以使用这种方法(或变量)来解决这个问题吗?我只需确保$app_info['callback_url']
始终相同,无论当前目录如何。
谢谢!
答案 0 :(得分:3)
我会在你的应用程序的bootstrap类型文件中定义一个 base dir 常量。
define('BASE_DIR', basedir(__FILE__));
(如果你能保证> = PHP 5.3,你可以使用__DIR__
。)
然后只需根据此常量包含文件......
include BASE_DIR . '/something.php';
答案 1 :(得分:0)
用户有多少个文件夹../将包含在图像路径中。
$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/";