gpt4 book ai didi

php - 进程不从 proc_open 获取管道。 lessc - 动态样式表语言

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:50 25 4
gpt4 key购买 nike

这是 lessc 软件的源代码,我认为它会有所帮助:

https://github.com/cloudhead/less.js/blob/master/bin/lessc

问题

我简单地在 shell 中使用 lessc:

lessc file.less

我得到一个 css 文件输出。

我尝试通过带有 proc_open 的 php 来完成。但是当我将输入文件通过管道传递给 proc 时,lessc 没有得到它。我有一个错误(来自管道 1):

"lessc: no input files"

在 shell 中等同于(不传递参数):

lessc
lessc ''

我的代码:

$descriptorspec = array(
0 => array("file", 'path/to/file/foo.less', "r"),
1 => array("pipe", "w"),
2 => array("file", '/tmp/lessCompiler-errors', "a")
);

$process = proc_open('lessc', $descriptorspec, $pipes);

if (is_resource($process)) {
$contents = stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($process);
}

顺便说一句。我尽量避免使用 exec() 函数。

我会很乐意提供任何帮助。马尔辛

最佳答案

我今天遇到了同样的问题,不确定您发布问题时解决方案是否有效,但现在您可以将“-”作为输入源传递给 lessc,以便从标准输入读取它。所以你只需要改变一行:

$process = proc_open('lessc -', $descriptorspec, $pipes);

因为我花了一些时间来弄清楚这里的所有细节是我的代码片段:

/* run lessc */
$descriptors = array(
0 => array( 'pipe', 'r' ),
1 => array( 'pipe', 'w' ),
2 => array( 'pipe', 'w' ));
$process = proc_open( 'lessc --no-color -x -', $descriptors, $pipes,
'/web/less', array( 'PATH' => '/usr/local/bin/' ) );

if( !is_resource( $process ) ) {
$this->errorMessage( 'Unable to start lessc' );
exit();
}

/* write generated content */
fwrite( $pipes[0], 'some dynamically generated less code' );
fclose( $pipes[0] );

/* read compiled css */
$css = stream_get_contents( $pipes[1] );
fclose( $pipes[1] );

/* check for errors */
if( $stderr = stream_get_contents( $pipes[2] ) ) {
$this->errorMessage( "lessc error: {$stderr}" );
exit();
}
fclose( $pipes[2] );

proc_close( $process );

/* write back */
$this->write( $css );
  • 我必须在 debian wheezy 上设置 PATH,因为 lessc 一直提示:/usr/bin/env: node: No such file or directory,参见 https://github.com/joyent/node/issues/3911
  • --no-color 抑制错误信息中的转义码
  • -x 压缩css

关于php - 进程不从 proc_open 获取管道。 lessc - 动态样式表语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com