Php 即使在0777目录中,也不能使用imagepng创建PNG图像
从Php 即使在0777目录中,也不能使用imagepng创建PNG图像,php,linux,ubuntu,Php,Linux,Ubuntu,从Android应用程序,我将photo发布到webserver。在PHP脚本中,我想将文件保存在目录中: $name = "parcelle_" . $photo->lireBienPhotoSeq() . ".png"; if ( ! file_exists (RP_PHOTO_PARCELLE) ) { mkdir(RP_PHOTO_PARCELLE, 0777, true); chmod(RP_PHOTO_PARCELLE, 0777); } $dest = DIR
Android
应用程序,我将photo
发布到webserver
。在PHP
脚本中,我想将文件保存在目录中
:
$name = "parcelle_" . $photo->lireBienPhotoSeq() . ".png";
if ( ! file_exists (RP_PHOTO_PARCELLE) ) {
mkdir(RP_PHOTO_PARCELLE, 0777, true);
chmod(RP_PHOTO_PARCELLE, 0777);
}
$dest = DIR_MAIN . '/data/photo_parcelle/' . $name;
$image = base64_decode($_POST["image"]);
$img = imagecreatefromstring($image);
if ($img !== false)
imagepng($img, $dest);
$chemin = PHOTO_PARCELLE . $name;
问题是没有创建
图像
,并且Android
应用程序接收到响应代码500(HTTP\u内部错误)!我做了一个ls-l
来查看目录的权限,它是0777。有什么不对劲吗?这一次有几件事情可能会出错,而您的描述不够详细
图片是如何发布的
您确定它是作为POST变量发送的,而不是作为$\u文件中的上载文件发送的吗
您确定$\u POST['image']包含可识别图像格式(JPEG、PNG、GIF、WBMP和GD2)的内容,而不是原始数据的内容吗
你确定RP_PHOTO_PARCELLE与DIR_MAIN相同吗?”/数据/照片_parcelle/'
imagecreatefromstring($image);)的结果是什么
如果您直接调用脚本,您是否让它执行或出现500个错误?此脚本可能会出错,您的描述不够详细
图片是如何发布的
您确定它是作为POST变量发送的,而不是作为$\u文件中的上载文件发送的吗
您确定$\u POST['image']包含可识别图像格式(JPEG、PNG、GIF、WBMP和GD2)的内容,而不是原始数据的内容吗
你确定RP_PHOTO_PARCELLE与DIR_MAIN相同吗?”/数据/照片_parcelle/'
imagecreatefromstring($image);)的结果是什么
如果直接调用脚本,是执行脚本还是出现500错误?查看日志后,imagecreatefromstring
函数未知,因此gd软件包已安装并正常工作!服务器是新的,不是我的本地计算机!lol查看日志后,然后imagecreatefromstring
函数未知,因此安装了gd软件包,它可以正常工作!服务器是新的,不是我的本地计算机!lol如果客户端出现500错误,您需要查看web服务器的错误日志以了解更多详细信息。只要PHP有健全的错误报告设置,错误就会在那里被解释出来。我建议从常规web浏览器而不是手持设备对此代码进行故障排除,并在测试中启用显示错误,以便您可以看到它失败。在顶部错误报告(E_ALL);ini设置(“显示错误”,1)代码>始终在开发中,在生产中删除。您有2个(或更多)选项:根据建议查看错误日志,或模拟一个简单的HTML表单,该表单使用文件输入发布到同一个PHP端点以提交png图像。HTTP最好的一点是,服务器不知道连接的是什么类型的客户端。您应该避免使用0777(所有者/组/所有人使用rwx)作为目录权限,而应该使用0755(u:rwx,g:rw,o:rw)或更好的0750(u:rwx,g:rw,o:-),chmod
是完全不必要的,而且当您创建目录时,权限已经设置好。此外,$\u POST
变量中不会出现文件。。。它们在变量中处理。最简单的方法是查看它,以获取临时位置并将其移动到需要的位置,或读取其内容。@KevinNagurski看起来希望通过常规POST而不是多部分正文和$\u文件来接收base64编码的字符串。如果客户端收到500个错误,您需要查看web服务器的错误日志以了解更多详细信息。只要PHP有健全的错误报告设置,错误就会在那里被解释出来。我建议从常规web浏览器而不是手持设备对此代码进行故障排除,并在测试中启用显示错误,以便您可以看到它失败。在顶部错误报告(E_ALL);ini设置(“显示错误”,1)代码>始终在开发中,在生产中删除。您有2个(或更多)选项:根据建议查看错误日志,或模拟一个简单的HTML表单,该表单使用文件输入发布到同一个PHP端点以提交png图像。HTTP最好的一点是,服务器不知道连接的是什么类型的客户端。您应该避免使用0777(所有者/组/所有人使用rwx)作为目录权限,而应该使用0755(u:rwx,g:rw,o:rw)或更好的0750(u:rwx,g:rw,o:-),chmod
是完全不必要的,而且当您创建目录时,权限已经设置好。此外,$\u POST
变量中不会出现文件。。。它们在变量中处理。最简单的方法是查看它,以获取临时位置并将其移动到需要的位置,或读取其内容。@KevinNagurski看起来希望通过常规POST而不是多部分正文和$\u文件来接收base64编码的字符串。如果客户端收到500个错误,您需要查看web服务器的错误日志以了解更多详细信息。只要PHP有健全的错误报告设置,错误就会在那里被解释出来。我建议从常规web浏览器而不是手持设备对此代码进行故障排除,并在测试中启用显示错误,以便您可以看到它失败。在顶部错误报告(E_ALL);ini设置(“显示错误”,1)代码>始终在开发中,在生产中删除。您有2个(或更多)选项:根据建议查看错误日志,或模拟一个简单的HTML表单,该表单使用文件输入发布到同一个PHP端点以提交png图像。HTTP最好的一点是,服务器不知道连接的是什么类型的客户端。您应该避免使用0777(所有者/组/所有人使用rwx)作为目录权限,而应该使用0755(u:rwx,g:rw,o:rw)或更好的0750(u:rwx,g:rw,o:-),chmod
是完全不必要的,而且当您创建目录时,权限已经设置好了,