我有一个奇怪的问题,我会尽量保持简短,但这有点令人困惑,所以请原谅...我有相同的MakeDir
命令运行几个页面,字面上完全相同的代码,但出于某种原因,某个页面上的代码不起作用......
所以一个简单的分解,我使用下面的代码创建一个目录,如果它还不存在,然后我使用mpdf在该目录中创建一个pdf。但由于某种原因,我无法使用动态变量创建目录...
我的代码:
$directory = ROOT.'/companies/'.$current_document->company_id.'/employees/employee_'.$current_document->employee_id.'/documents/generated/signatures/'.str_replace('.pdf', '', $current_document->file_name).'/';
/* Create Directories */
if (!file_exists($directory)) {
mkdir($directory, 0777, true);
}
上面的代码给了我一个错误Warning: file_exists() expects parameter 1 to be a valid path, string given
和Warning: mkdir() expects parameter 1 to be a valid path, string given
但是当我var_dump
变量/home/xxxxxxx/public_html/account/companies/2/employees/employee_1233/documents/generated/signatures/LWJiVq9/
时,我得到的值,我应该提一下,使用makedir的完整路径代替变量可以完全出于某种原因......
除此之外,代码使用mpdf生成PDF并在此情况下将其置为@ /home/xxxxxxx/public_html/account/companies/2/employees/employee_1233/documents/generated/LWJiVq9.pdf
,但在生成mPDF error: Unable to create output file: /home/xxxxxxx/public_html/account/companies/2/employees/employee_1233/documents/generated/LWJiVq9.pdf
我不确定导致它的原因,因为同一个脚本会正确地生成所有其他文档,只有在这种情况下它才会完全炸毁...
任何建议都会很棒:),谢谢你们。
答案 0 :(得分:0)
而不是 ROOT 提供 __ DIR __ ,并提供相对于脚本退出的目录的路径。
注意的
DIR__文件的目录。如果在include中使用,则返回包含文件的目录。这相当于dirname(__ FILE )。除非它是根目录
,否则此目录名称没有尾部斜杠答案 1 :(得分:0)
file_name
变量(例如1xy.pdf
函数file_exists
和makedir
都会失败,显然mpdf
也不会能够创建文件。但是当我把它var_dump出来时,按原样复制并粘贴整个链接,它会起作用......
所以我使用了一个函数从数据库名称字段中删除任何非法字符并且它有效...但是请注意,我还必须再次更新数据库记录,因为由于某种原因,有一个字符在那里不断获取拿起....
我使用的功能是:
function normalizeString ($str = '')
{
$str = strip_tags($str);
$str = preg_replace('/[\r\n\t ]+/', ' ', $str);
$str = preg_replace('/[\"\*\/\:\<\>\?\'\|]+/', ' ', $str);
$str = strtolower($str);
$str = html_entity_decode( $str, ENT_QUOTES, "utf-8" );
$str = htmlentities($str, ENT_QUOTES, "utf-8");
$str = preg_replace("/(&)([a-z])([a-z]+;)/i", '$2', $str);
$str = str_replace(' ', '-', $str);
$str = rawurlencode($str);
$str = str_replace('%', '-', $str);
return $str;
}
我从string sanitizer for filename得到的
希望这将有助于未来的人们挣扎...再次,在数据库和var_dump中都找不到非法字符,但它仍然发生,所以normalizeString
是我将继续使用的东西,因为这是非常随机,我建议大家一起来看看。
希望有所帮助