这是我的代码:
$file = '/etc/apache2/sites-available/000-default.conf';
// Laravel Projects
$newDirectory = "<Directory $path/public>
Allow Override all
Require all granted
</Directory>";
$virtualHost = file_put_contents($file,str_replace("</VirtualHost>","$newDirectory\n\n</VirtualHost>",file_get_contents($file)));
它也有效。如您所见,它打开000-default.conf
文件(在linux中)并在<VirtualHost>
块的末尾添加一个新目录。
我的问题是,有时其余代码会抛出错误,当我再次运行整个脚本时,上面的代码会将该目录追加两次。
我如何在file_put_contents
的路上添加条件,首先检查同一目录是否存在,然后追加,否则不做任何事情?
答案 0 :(得分:1)
这就是尝试捕获块的原因。我在移动设备上,所以我无法为您提供代码,但这里有一个小小的想法:
保存原始文件内容并将代码包装在try catch块中。如果发生错误,请将文件重置为catch块中的原始内容。
答案 1 :(得分:1)
如何在file_put_contents的路上添加条件,首先检查是否存在相同的目录,
如果文件不是很大,你可以把它读成字符串并用strpos检查:
const MyAppStack = StackNavigator({
Login: { screen: LoginPage },
Home: { home: HomePage }
});
class MyApp extends Component {
componentWillMount() {}
componentWillUnmount() {}
render() {
return <MyAppStack />;
}
}
答案 2 :(得分:1)
你需要像下面这样做: -
<?php
$file = '/etc/apache2/sites-available/000-default.conf';
// Laravel Projects
$newDirectory = "<Directory $path/public>
Allow Override all
Require all granted
</Directory>";
$virtualHostContent = file_get_contents($file);
if( strpos($virtualHostContent,"<Directory $path/public>") === false) {
$virtualHost = file_put_contents($file,str_replace("</VirtualHost>","$newDirectory\n\n</VirtualHost>",$virtualHostContent));
}
?>