我正在使用CodeIgniter 3和mPDF来生成PDF文件。 在我的控制器中,我需要指定存储pdf文件的文件路径。
目前,这段代码在我的本地服务器上运行正常:
$pdfFilePath = FCPATH."/raports/invoice_".$data['nr'].".pdf";
然而,不适用于生产(托管服务器)。
当我绕过时,我已将FCPATH
替换为$_SERVER['DOCUMENT_ROOT']
$pdfFilePath = $_SERVER['DOCUMENT_ROOT']."raports/invoice_".$data['nr'].".pdf";
此解决方案适用于生产(但不适用于我的本地服务器),因此每次我想上传新版本时,我都需要更改它。
错误消息显示:
Message: fopen(): open_basedir restriction in effect.
fopen failed to open stream: Operation not permitted
任何可以在本地和生产服务器上运行的解决方案吗?
答案 0 :(得分:1)
您可能会通过某种if语句或类似方式来管理它,但CI中还有另一个很酷的功能。
在大多数情况下,您可能有多个配置设置,这些设置在生产,测试和开发之间是不同的。 因此,Codeigniter有可能根据您的平台运行环境加载不同的配置值。
如果您使用apache - 激活SetEnvIf(如果它还没有)
加入你的htaccess,比如
SetEnvIf Host localhost$ CI_ENV=development
SetEnvIf Host testhost$ CI_ENV=testing
SetEnvIf Host productionhost$ CI_ENV=production
之后只需在您的application / config /文件夹中创建三个名为开发,测试和生产的文件夹 如果您将不同的配置文件放在此文件夹中 - ci根据您当前的工作环境访问它
请按照CI Documentation了解更多信息