PHP执行代码不工作
我正在试着运行这个代码,它一直工作到代码试图执行一个函数,从一个临时文件创建一个pic。在这里,它工作得不好:PHP执行代码不工作,php,html,Php,Html,我正在试着运行这个代码,它一直工作到代码试图执行一个函数,从一个临时文件创建一个pic。在这里,它工作得不好: // create temporary latex file $fp = fopen($this->_tmp_dir."/".$this->_tmp_filename.".tex","a+"); fputs($fp,$latex_document); fclose($fp); // create temporary dvi file
// create temporary latex file
$fp = fopen($this->_tmp_dir."/".$this->_tmp_filename.".tex","a+");
fputs($fp,$latex_document);
fclose($fp);
// create temporary dvi file
$command = $this->_latex_path." --interaction=nonstopmode ".$this->_tmp_filename.".tex";
$status_code = exec($command);
if (!$status_code) { $this->cleanTemporaryDirectory(); chdir($current_dir); $this->_errorcode = 4; return false; }
// convert dvi file to postscript using dvips
$command = $this->_dvips_path." -E ".$this->_tmp_filename.".dvi"." -o ".$this->_tmp_filename.".ps";
$status_code = exec($command);
// imagemagick convert ps to image and trim picture
$command = $this->_convert_path." -density ".$this->_formula_density.
" -trim -transparent \"#FFFFFF\" ".$this->_tmp_dir."/".$this->_tmp_filename.".ps ".
$this->_tmp_dir."/".$this->_tmp_filename.".".$this->_image_format;
$status_code = exec($command);
$latexlog = fopen($this->_tmp_dir."/latex.log","a+");
fputs($latexlog,$command);
fclose($latexlog);
// test picture for correct dimensions
$dim = $this->getDimensions($this->_tmp_filename.".".$this->_image_format);
if ( ($dim["x"] > $this->_xsize_limit) or ($dim["y"] > $this->_ysize_limit)) {
$this->cleanTemporaryDirectory();
chdir($current_dir);
$this->_errorcode = 5;
$this->_errorextra = ": " . $dim["x"] . "x" . number_format($dim["y"],0,"","");
return false;
}
// copy temporary formula file to cahed formula directory
$latex_hash = md5($latex_formula . ";fd=" . $this->_formula_density);
$filename = $this->getPicturePath()."/".$latex_hash.".".$this->_image_format;
$latexlog = fopen($this->_tmp_dir."/latex1.log","a+");
fputs($latexlog,$filename);
fclose($latexlog);
$status_code = copy($this->_tmp_filename.".".$this->_image_format,$filename);
latex1.log的内容为:
C:\inetpub\wwwroot\tiki/lib/equation/pictures/35d8c95bf51a397b06a20078c95f8ff4.png"C:\inetpub\wwwroot\tiki/lib/equation/pictures/35d8c95bf51a397b06a20078c95f8ff4.png"
以及latex.log:
"C:/Program Files/ImageMagick-7.0.5-Q16/convert.exe" -density 120 -trim -transparent "#FFFFFF" C:\inetpub\wwwroot\tiki/lib/equation/tmp/e940a3ba6df738388b772344a8a112e4.ps C:\inetpub\wwwroot\tiki/lib/equation/tmp/e940a3ba6df738388b772344a8a112e4.png"C:/Program Files/ImageMagick-7.0.5-Q16/convert.exe" -density 120 -trim -transparent "#FFFFFF" C:\inetpub\wwwroot\tiki/lib/equation/tmp/8671e7b4d35f3d498f22e225dbe70bd9.ps C:\inetpub\wwwroot\tiki/lib/equation/tmp/8671e7b4d35f3d498f22e225dbe70bd9.png
除了html中的此错误之外:
PHP (5.6.30) ERROR (E_WARNING):
File: C:\inetpub\wwwroot\tiki\lib\equation\class.latexrender.php
Line: 284
Type: copy(8671e7b4d35f3d498f22e225dbe70bd9.png): failed to open stream: No such file or directory
看起来您可能正在使用用于在Windows中的Linux系统上执行的代码。我猜测这是因为图像的路径混合了
/
和\
:
C:\inetpub\wwwroot\tiki/lib/equation/pictures/35d8c95bf51a397b06a20078c95f8ff4.png"C:\inetpub\wwwroot\tiki/lib/equation/pictures/35d8c95bf51a397b06a20078c95f8ff4.png"
您可以尝试使用
\
,或者使用PHP常量目录分隔符
。如果您在进行任何操作之前都添加了检查,这可能会有助于您的调试。您发布的最后一条消息非常清楚。显然,无论抛出什么逻辑,都无法打开该文件。很可能是文件系统中的路径和位置有问题。请尝试shell\u exec
而不是exec
。获取带有第二个参数的输出。我不明白“复制到cmd”是什么意思,我的意思是在cmd中运行此代码,它会生成pic