这应该是如此简单,但我对于解决这个问题的最佳方法感到有点难过。
我正在构建一个PHP插件,因此我无法对任何路径进行硬编码。我还需要考虑http协议(http / https)。我使用GD Lib来创建和保存图像。我的目录结构如下所示:
public_html > php_plugin > php_classes > php_class.php
public_html > php_plugin > saved_images
该插件安装在public_html
中。我运行代码将图像保存在php_class.php
中。在这里我保存图像:'../saved_images/imagename.jpg'
。这很好,图像保存在正确的目录中。
然后我通过AJAX返回此路径以显示图像。并且,显然此路径无法解决,我得到了一个损坏的图像链接:http://www.website.com/saved_images/imagename.jpg
它应该如下所示:http://www.website.com/php_plugin/saved_images/imagename.jpg
所以在我设置保存路径的PHP类中,我如何构建一个可以用AJAX返回的路径,请记住这是一个插件,可以在许多不同的站点上使用。
修改
对于记录,我知道我可以使用$_SERVER['SERVER_NAME']
和$_SERVER['SERVER_PROTOCOL']
,但基于这些SO问题(PHP $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'], am I understanding the man pages correctly?和PHP Get Site URL Protocol - http vs https)我认为这种方法将非常不可靠将托管插件的服务器配置将是未知的。
答案 0 :(得分:0)
你正在混淆两种不同类型的路径;服务器文件系统路径和URL路径。在您的情况下,它们是相似的,但根据服务器配置,这些可能会大不相同。
既然你写了通过AJAX返回图像的路径,大概你的AJAX代码必须知道PHP脚本的URL才能调用它(类似http://example.com/php_plugin/index.php
?)。在这种情况下,您可以让PHP仅返回文件名,并在您的javascript中提供其余路径。