Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Bash脚本以4096字节截断输出文件_Php_Bash_Ubuntu_Expect_Openvpn - Fatal编程技术网

Php Bash脚本以4096字节截断输出文件

Php Bash脚本以4096字节截断输出文件,php,bash,ubuntu,expect,openvpn,Php,Bash,Ubuntu,Expect,Openvpn,我正在编写一个脚本来自动创建OpenVPN证书,向VPN系统添加新的客户端。我正在构建一个小网页(都是内部的,不能从互联网上访问),允许用户输入客户端名称,然后输出一个带有证书的zip文件,放在新的客户端pc上(通过Teamviewer) 该脚本(和网页)在Ubuntu 14.04服务器上运行,运行OpenVPN和Observium 当我从终端执行这个脚本时,它工作得非常好,证书创建得非常漂亮 当我从PHP命令执行的浏览器运行此脚本时: shell_exec("sudo <path to

我正在编写一个脚本来自动创建OpenVPN证书,向VPN系统添加新的客户端。我正在构建一个小网页(都是内部的,不能从互联网上访问),允许用户输入客户端名称,然后输出一个带有证书的zip文件,放在新的客户端pc上(通过Teamviewer)

该脚本(和网页)在Ubuntu 14.04服务器上运行,运行OpenVPN和Observium

当我从终端执行这个脚本时,它工作得非常好,证书创建得非常漂亮

当我从PHP命令执行的浏览器运行此脚本时:

shell_exec("sudo <path to script>/<script>.sh $clientname");

通过不将交互式shell与spawn/expect/send结合使用,可以解决此特定问题。直接使用CLI for OpenVPN(由构建密钥脚本调用的PKI工具)创建文件时不会出现任何问题

所以语法应该是:

/etc/openvpn/easy-rsa/pkitool <clientname>
/etc/openvpn/easy rsa/pktool

脚本正在创建证书吗?通过直接写入文件?文件本身被截断了吗?是的,构建密钥调用创建证书的PKI工具。它在/etc/openvpn/easy rsa/keys目录中创建文件。从浏览器执行脚本时,这些文件确实会被截断为4096个文件,而从终端执行脚本时,这些文件就可以了。绿色从终端执行,红色从浏览器执行。
ulimit
php
生成的进程上执行?你能手动获取
php
让shell创建一个大于4096的文件吗?我创建了一个简单的for循环,打印数字1-5000,生成一个24k字节的日志文件,这可以从浏览器和终端两个方面工作。ini关闭了它的输出缓冲区,ulimit-p是8,因为您没有与程序交互,所以这里不需要
expect
。只需将答案输入stdin即可
/etc/openvpn/easy-rsa/pkitool <clientname>