我在PHP中使用curl
来返回PHP文件的内容。我想在本地执行此操作,因为我将在同一脚本中访问多个PHP文件,因此直接打开文件会更快。
但是,我希望能够将参数推送到PHP文件中(将它们完全视为Web上的PHP文件,但在本地抓取它们),因为我想将参数推送到脚本中,这将生成额外的动态内容当我抓住它。
如果我在本地调用文件,这可以吗?我已尝试使用file:///,直接调用该文件,但这不会运行这些文件中的PHP代码。
有什么想法吗?
修改
对于这种困惑感到抱歉: - 目前正在网络服务器上运行,我目前正在调用http://(而不是file:///),因此可以执行这些文件中包含的PHP。但是,我发现这很慢,因为我正在生成多个curl()调用,这些调用本质上是多次调用服务器本身。
答案 0 :(得分:5)
你可以这样做:
function php_to_string($php_file, $new_GET = false, $new_POST = false) {
// replacing $_GET, $_POST if necessary
if($new_GET) {
$old_GET = $_GET;
$_GET = $new_GET;
}
if($new_POST) {
$old_POST = $_POST;
$_POST = $new_POST;
}
ob_start();
include($php_file);
// restoring $_GET, $_POST if necessary
if(isset($old_GET)) {
$_GET = $old_GET;
}
if(isset($old_POST)) {
$_POST = $old_POST;
}
return ob_get_clean();
}
$content = php_to_string('my_file.php');
$content = php_to_string('my_file.php', Array('id'=>23)); // http://localhost/my_fie.php?id=23
但请注意,它可能会覆盖您现有的变量,导致错误(例如重复定义)等等,因此您可以使用sandbox solution
答案 1 :(得分:1)
我相信您希望在本地计算机上设置网络服务器(例如Apache),以便转到http://localhost/script.php?param1=foo¶m2=bar
而不是file:///path/to/script.php
。不同之处在于当您执行file:///
时,文件只是打开,但如果您通过Apache,则脚本实际上是已执行。
至于将参数传递给脚本,请使用查询字符串(例如?param1=foo
等)。
我不知道你为什么要做你正在做的事情,但希望这可以帮助你做到这一点。