PHP执行代码不工作

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

我正在试着运行这个代码,它一直工作到代码试图执行一个函数,从一个临时文件创建一个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
    $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