我正在尝试使用绝对网址包含文件:
<?
session_start();
$_SESSION['sr_path'] = 'http://domain.org/www/myapp';
include($_SESSION['sr_path'].'/assets/contact.php');
?>
但它不起作用。
有什么好主意的吗?
答案 0 :(得分:1)
您按目录包含文件而不是网址:
def _Getch():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
class xyctl:
def _terminal_size():
import fcntl, struct
h, w, hp, wp = struct.unpack('HHHH',
fcntl.ioctl(0, termios.TIOCGWINSZ,
struct.pack('HHHH', 0, 0, 0, 0)))
return w, h, w * h
def _matrix_calc(adj_x, adj_y):
cur_x, cur_y = xyctl.getter()
new_x, new_y = (
(cur_x + adj_x),
(cur_y + adj_y)
)
if (new_x * new_y) < (xyctl._terminal_size()[2]):
return new_x, new_y
else:
_writer(CHAR_BEL)
def getter():
_writer(CHAR_ESC + "[6n")
pos = until("R", raw=True)
_writer(CHAR_CRR + CHAR_SPC * (len(pos) + 1) + CHAR_CRR)
pos = pos[2:].split(";")
pos[0], pos[1] = int(pos[1]), int(pos[0])
return pos
def setter(new_x, new_y):
_writer(CHAR_ESC + "[{};{}H".format(new_x, new_y))
def adjust(adj_x, adj_y):
new_x, new_y = xyctl._matrix_calc(adj_x, adj_y)
xyctl.setter(new_x, new_y)
或
include(dirname(__FILE__).'/assets/contact.php');
其中include(dirname(__FILE__).'/contact.php');
获取当前文件的路径,您可以在其中编写此代码。
或者你可以在你的网站index.php页面中定义常量,并在任何地方使用这个const:
dirname(__FILE__)
然后在任何这样的目录中使用它:
define('ROOT', dirname(__FILE__));
答案 1 :(得分:1)
您当前正在尝试通过URL而不是服务器上的路径来包含文件。默认情况下,您不能使用“HTTP”包装器,否则您将收到此警告(或类似):
stdin
虽然您可以按网址添加文件,但通常最好在服务器上包含路径。
如果你确实想要继续使用当前的方法,并将存储在不同服务器上的内容包含在运行脚本的服务器上,则需要通过将'allow_url_include'设置为{{1}来更新配置}}
如果在PHP中启用了“URL include wrappers”,则可以使用URL指定要包含的文件(通过HTTP或其他受支持的包装器 - 请参阅支持的协议和包装器以获取协议列表)而不是本地路径名。
但值得注意的是,如果您使用HTTP,您可能依赖远程服务器为您处理PHP脚本并将其返回到您的脚本。正如文档所述:
可以在远程服务器上处理远程文件(取决于文件扩展名和远程服务器是否运行PHP的事实),但它仍然必须生成有效的PHP脚本,因为它将在本地服务器上处理。
澄清:
...脚本实际上是在远程服务器上运行,然后结果被包含在本地脚本中。
<强> TL; DR 强>
我猜你真正想做什么,假设你试图包含的脚本与正在执行包含的脚本位于同一服务器上,就是在服务器上给出它的路径,例如:
http:// wrapper is disabled in the server configuration by allow_url_include=0
看起来像这样:
1
而不是:
/var/www/myapp/assets/contact.php