file_get_contents()无法读取PHP标签<! - ?php? - >

时间:2015-03-03 20:17:13

标签: php cakephp

我正在使用cakePHP并且被这个谜语困住了。 前一段时间我创建了一个函数,使用file_get_contents()和字符串替换函数在文件中动态插入自定义路由。

$filename = "301routes.php";
$path = SERVER_PUBLIC_PATH . 'app' . DS . 'config';
$add_data = "Router::connect('".$old."', array('controller'=>'index_router', 'action'=>'redirect_301','".$new."'));\n";
$file_data = file_get_contents($path . DS . $filename);
$file_data = str_replace("<?php\n","<?php\n".$add_data,$file_data);
file_put_contents($path . DS . $filename, $file_data);

这有效,但现在我试图在其他项目中使用完全相同的功能,并且只有在没有PHP标记时才能工作。问题在于file_get_contents()函数,因为当内容为:

时,它会很好地读取文件
// routes here
Router::connect('/articles/category/en/test', array('controller'=>'index_router', 'action'=>'redirect_301','/articles/category/en/test-old'));

但是当我改变这样的开始时

<?php
Router::connect('/articles/category/en/test', array('controller'=>'index_router', 'action'=>'redirect_301','/articles/category/en/test-old'));
?>

file_get_contents()仅返回文件的一部分:

string(154) "'index_router', 'action'=>'redirect_301','/articles/category/en/test-old')); ?>"

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

Try: Create new file 301routes.php in config directory then read write permission of file.
$filename = "301routes.php";
$path =  __DIR__;
$add_data = "Router::connect('".$old."', array('controller'=>'index_router', 'action'=>'redirect_301','".$new."'));\n";
$file_data = file_get_contents($path . DS . $filename);
$file_data = str_replace("<?php\n","<?php\n".$add_data,$file_data);
file_put_contents($path . DS . $filename, $file_data);

答案 1 :(得分:0)

运行php代码并分配给$ file_data变量,

ob_start();
$file_data = file_get_contents($path . DS . $filename);
ob_end_flush();